自动化立体仓库 - WMS系统
Junjie
2023-05-12 ea327cdeca992d02acc2b2744e09ef449c0ee3cb
库临、库存上下限
7个文件已修改
208 ■■■■ 已修改文件
src/main/java/com/zy/asrs/entity/Mat.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/ViewStayTimeBean.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/MatMapper.xml 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ViewStayTimeMapper.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/mat/mat.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/home/console.html 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/mat/mat.html 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/Mat.java
@@ -306,9 +306,27 @@
    @ExcelProperty(value = "备注")
    private String memo;
    /**
     * 库存预警数量上限
     */
    @TableField("store_max")
    private Double storeMax;
    /**
     * 库存预警数量下限
     */
    @TableField("store_min")
    private Double storeMin;
    /**
     * 库龄预警上限
     */
    @TableField("store_max_date")
    private Integer storeMaxDate;
    public Mat() {}
    public Mat(String uuid,Long tagId,String matnr,String maktx,String name,String specs,String model,String color,String brand,String unit,Double price,String sku,Double units,String barcode,String origin,String manu,String manuDate,String itemNum,Double safeQty,Double weight,Double length,Double volume,String threeCode,String supp,String suppCode,Integer beBatch,String deadTime,Integer deadWarn,Integer source,Integer inspect,Integer danger,Integer status,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
    public Mat(String uuid, Long tagId, String matnr, String maktx, String name, String specs, String model, String color, String brand, String unit, Double price, String sku, Double units, String barcode, String origin, String manu, String manuDate, String itemNum, Double safeQty, Double weight, Double length, Double volume, String threeCode, String supp, String suppCode, Integer beBatch, String deadTime, Integer deadWarn, Integer source, Integer inspect, Integer danger, Integer status, Long createBy, Date createTime, Long updateBy, Date updateTime, String memo, Double storeMax, Double storeMin, Integer storeMaxDate) {
        this.uuid = uuid;
        this.tagId = tagId;
        this.matnr = matnr;
@@ -346,6 +364,9 @@
        this.updateBy = updateBy;
        this.updateTime = updateTime;
        this.memo = memo;
        this.storeMax = storeMax;
        this.storeMin = storeMin;
        this.storeMaxDate = storeMaxDate;
    }
//    Mat mat = new Mat(
src/main/java/com/zy/asrs/entity/ViewStayTimeBean.java
@@ -29,6 +29,14 @@
    private Integer row;
    private Double store_max;
    private Double store_min;
    private Integer store_max_date;
    private Integer sum_qty;
    @ApiModelProperty(value= "库位号")
    private String loc_no;
src/main/resources/mapper/MatMapper.xml
@@ -42,7 +42,9 @@
        <result column="update_by" property="updateBy" />
        <result column="update_time" property="updateTime" />
        <result column="memo" property="memo" />
        <result column="store_max" property="storeMax" />
        <result column="store_min" property="storeMin" />
        <result column="store_max_date" property="storeMaxDate" />
        <result column="stock" property="stock" />
    </resultMap>
src/main/resources/mapper/ViewStayTimeMapper.xml
@@ -8,6 +8,9 @@
        <if test="loc_no!=null and loc_no!='' ">
            and asr_loc_mast.loc_no like '%' + #{loc_no} + '%'
        </if>
        <if test="specs!=null and specs!='' ">
            and specs like '%' + #{specs} + '%'
        </if>
        <if test="matnr!=null and matnr!='' ">
            and matnr like '%' + #{matnr} + '%'
        </if>
@@ -58,6 +61,11 @@
            where 1=1
            <include refid="viewStayTimeConditionSql"></include>
        ) t
        left join (select matnr as c ,store_max_date,store_max,store_min from man_mat) b
        on t.matnr = b.c
        left join (select matnr as f,sum(asr_loc_detl.anfme) as sum_qty from asr_loc_detl group by asr_loc_detl.matnr ) as z
        on z.f= b.c
    ) a where a.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})
</select>
src/main/webapp/static/js/mat/mat.js
@@ -5,6 +5,9 @@
    var cols = [
        {type: 'checkbox'}
        ,{field: 'tagId$', align: 'center',title: '归类', templet: '#tagTpl'}
        ,{field: 'storeMax', align: 'center',title: '库存上限',width: 90}
        ,{field: 'storeMin', align: 'center',title: '库存下限',width: 90}
        ,{field: 'storeMaxDate', align: 'center',title: '库龄上限(天)',width: 90}
    ];
    cols.push.apply(cols, matCols);
    cols.push(
src/main/webapp/views/home/console.html
@@ -85,6 +85,12 @@
        .layui-form.layui-border-box.layui-table-view {
            border-top: 1px solid rgba(0,0,0,.1);
        }
        #search-box {
            margin-left: 10px;
            z-index: 999;
            position: relative;
            padding: 0 30px 10px 30px;
        }
    </style>
</head>
<body>
@@ -103,6 +109,29 @@
<div class="home-elem loc-retention">
    <div class="layui-form">
        <div id="form-header">库存滞留时间统计表</div>
        <div class="layui-card" style="padding: 0 20px 1px 20px;">
            <fieldset class="layui-elem-field site-demo-button" style="margin: 20px;">
                <legend>搜索栏</legend>
                <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="matnr" placeholder="商品编号" autocomplete="off">
                        </div>
                    </div>
                    <div class="layui-inline">
                        <div class="layui-input-inline">
                            <input class="layui-input" type="text" name="specs" placeholder="规格" autocomplete="off">
                        </div>
                    </div>
                    <!-- 待添加 -->
                    <div id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block">
                        <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>
            </fieldset>
        </div>
        <table class="layui-hide" id="stayTime" lay-filter="stayTime"></table>
    </div>
</div>
@@ -235,17 +264,24 @@
    var pageCurr;
    function getCol() {
        var cols = [
            {field: 'appeTime$', title: '入库时间', align: 'center', width: 200}
            ,{field: 'stay_time', align: 'center',title: '滞留天数'}
            ,{field: 'loc_no', align: 'center',title: '库位号'}
            //{field: 'appeTime$', title: '入库时间', align: 'center', width: 165}
            {field: 'stay_time', align: 'center',title: '滞留天数',width: 90}
            ,{field: 'store_max_date', align: 'center',title: '库龄上限',width: 90}
            ,{field: 'store_min', title: '库存下限', align: 'center'}
            ,{field: 'sum_qty', title: '库存总数', align: 'center'}
            ,{field: 'store_max', title: '库存上限', align: 'center'}
            ,{field: 'loc_no', align: 'center',title: '库位号',width: 90}
        ];
        cols.push.apply(cols, detlCols);
        //cols.push({field: 'sum_qty', title: '库存总数', align: 'center'})
        return cols;
    }
    layui.use(['table','laydate', 'form'], function() {
        var table = layui.table;
        var $ = layui.jquery;
        var layer = layui.layer;
        var form = layui.form;
        // 数据渲染
        tableIns = table.render({
@@ -275,6 +311,37 @@
                statusCode: 200
            },
            done: function(res, curr, count) {
                var that = this.elem.next();
                res.data.forEach(function (item, index) {
                    var tr = that.find(".layui-table-box tbody tr[data-index='" + index + "']");
                    if (item.store_max_date != null) {
                        if (item.stay_time > item.store_max_date) {
                            tr.css("background-color", "#ff6f00");
                            tr.css("color", "white");
                            tr.children()[1].style.backgroundColor="#ff0000"
                        }
                    }
                    //低于下限
                    if (item.sum_qty < item.store_min) {
                        tr.css("background-color", "#ff6f00");
                        tr.css("color", "white");
                        tr.children()[2].style.backgroundColor="rgb(255,0,0)"
                        tr.children()[2].style.color="white"
                        tr.children()[3].style.backgroundColor="#ff0000"
                        tr.children()[3].style.color="white"
                    }
                    //高于上限
                    if(item.store_max != null) {
                        if (item.sum_qty > item.store_max) {
                            tr.css("background-color", "#ff6f00");
                            tr.css("color", "white");
                            tr.children()[3].style.backgroundColor="#009c04"
                            tr.children()[3].style.color="white"
                            tr.children()[4].style.backgroundColor="#3da83f"
                            tr.children()[4].style.color="white"
                        }
                    }
                });
                if (res.code === 403) {
                    top.location.href = baseUrl+"/";
                }
@@ -296,6 +363,16 @@
                    curr: 1
                },
                done: function (res, curr, count) {
                    var that = this.elem.next();
                    res.data.forEach(function (item, index) {
                        if (item.store_max_date != null) {
                            if (item.stay_time > item.store_max_date) {
                                var tr = that.find(".layui-table-box tbody tr[data-index='" + index + "']");
                                tr.css("background-color", "#FF5722");
                                tr.css("color", "white");
                            }
                        }
                    });
                    if (res.code === 403) {
                        top.location.href = baseUrl+"/";
                    }
@@ -303,6 +380,36 @@
                }
            });
        });
        // 搜索栏搜索事件
        form.on('submit(search)', function (data) {
            tableReload();
        });
        // 搜索栏搜索事件
        form.on('submit(reset)', function (data) {
            $(':input', $('#search-box'))
                .val('')
                .removeAttr('checked')
                .removeAttr('selected');
            var searchData = {};
            $.each($('#search-box [name]').serializeArray(), function() {
                searchData[this.name] = this.value;
            });
            tableIns.reload({
                where: searchData
            });
        });
        function tableReload() {
            var searchData = {};
            $.each($('#search-box [name]').serializeArray(), function() {
                searchData[this.name] = this.value;
            });
            tableIns.reload({
                where: searchData
            });
        }
    });
@@ -330,4 +437,4 @@
        return fmt;
    }
</script>
</html>
</html>
src/main/webapp/views/mat/mat.html
@@ -180,6 +180,7 @@
        <input name="updateBy" type="hidden">
        <div class="layui-row">
            <div class="layui-col-md6">
                <div class="layui-form-item">
@@ -190,47 +191,31 @@
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">物料号</label>
                    <label class="layui-form-label layui-form-required">商品名称</label>
                    <div class="layui-input-block">
                        <input name="maktx" placeholder="请输入物料号" class="layui-input">
                        <input name="maktx" placeholder="请输入商品名称" class="layui-input" lay-vertype="tips" lay-verify="required" required="">
                    </div>
                </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="name" placeholder="请输入移动类型" class="layui-input">
                        <input name="storeMax" placeholder="库存上限" type="number" class="layui-input">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">重量</label>
                    <label class="layui-form-label">库龄上限(天)</label>
                    <div class="layui-input-block">
                        <input type="number" name="weight" placeholder="请输入重量" class="layui-input">
                        <input name="storeMaxDate" placeholder="库龄上限(天)" type="number" class="layui-input">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">状态</label>
                    <div class="layui-input-block">
                        <input name="origin" placeholder="请输入状态" class="layui-input">
                    </div>
                </div>
<!--                <div class="layui-form-item">-->
<!--                    <label class="layui-form-label">备注</label>-->
<!--                    <div class="layui-input-block">-->
<!--                        <input name="memo" placeholder="请输入备注" class="layui-input">-->
<!--                    </div>-->
<!--                </div>-->
            </div>
            <div class="layui-col-md6">
                <div class="layui-form-item">
                    <label class="layui-form-label layui-form-required">物料号</label>
                    <label class="layui-form-label layui-form-required">商品编号</label>
                    <div class="layui-input-block">
                        <input id="matnr" name="matnr" placeholder="请输入单据号" class="layui-input" lay-vertype="tips" lay-verify="required" required="">
                        <input id="matnr" name="matnr" placeholder="请输入商品编号" class="layui-input" lay-vertype="tips" lay-verify="required" required="">
                    </div>
                </div>
@@ -242,23 +227,17 @@
                </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="model" placeholder="请输入批次" class="layui-input">
                        <input name="storeMin" placeholder="库存下限" type="number" class="layui-input">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">单据时间</label>
                    <div class="layui-input-block">
                        <input name="manuDate" placeholder="请输入单据时间" class="layui-input">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label">包数</label>
                    <label class="layui-form-label">备注</label>
                    <div class="layui-input-block">
                        <input type="number" name="units" placeholder="请输入包数" class="layui-input">
                        <input name="memo" placeholder="请输入备注" class="layui-input">
                    </div>
                </div>