自动化立体仓库 - WMS系统
pang.jiabao
2025-02-21 e28269e80c3d8cdd4b77566263f684532436b489
拣货单管理多选,全选excel导出
3个文件已修改
1个文件已添加
167 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/PakoutController.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/PakOutExcelExportParam.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/picking/picking.js 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/picking/picking.html 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/PakoutController.java
@@ -13,6 +13,7 @@
import com.core.common.R;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.OrderDomainParam;
import com.zy.asrs.entity.param.PakOutExcelExportParam;
import com.zy.asrs.entity.result.PakoutExcelVo;
import com.zy.asrs.entity.result.PakoutVo;
import com.zy.asrs.service.*;
@@ -427,4 +428,58 @@
                .doWrite(newPakOutExcelVos);
    }
    @PostMapping (value = "/pakOut/excelExport3/auth")
    @ManagerAuth
    public void export(HttpServletResponse response, @RequestBody PakOutExcelExportParam pakOutExcelExportParam) throws IOException {
        EntityWrapper<Pakout> entityWrapper = new EntityWrapper<>();
        if ("all".equals(pakOutExcelExportParam.getType())) {
            PakOutExcelExportParam.QueryWhere queryWhere = pakOutExcelExportParam.getQueryWhere();
            if (!Cools.isEmpty(queryWhere.getCust_name())) {
                entityWrapper.eq("cust_name", queryWhere.getCust_name());
            }
            if (!Cools.isEmpty(queryWhere.getDoc_num())) {
                entityWrapper.eq("doc_num", queryWhere.getDoc_num());
            }
            if (queryWhere.getCreate_time().contains(RANGE_TIME_LINK)) {
                String[] dates = queryWhere.getCreate_time().split(RANGE_TIME_LINK);
                entityWrapper.ge("create_time", DateUtils.convert(dates[0]));
                entityWrapper.le("create_time", DateUtils.convert(dates[1]));
            }
            // 限制销售角色只能看自己创建的单子(销售角色id固定21,不能随意修改)
            User user = getUser();
            if (user.getRoleId() != 2 && user.getRoleId() != 24) {
                entityWrapper.eq("create_by", user.getId());
            }
        } else {
            entityWrapper.in("doc_num", pakOutExcelExportParam.getDocNumList());
        }
        List<Pakout> list = pakoutService.selectList(entityWrapper);
        List<PakoutVo> pakOutVoList = new ArrayList<>();
        for (Pakout pakOut : list) {
            Pla pla = plaService.selectOne(new EntityWrapper<Pla>()
                    .eq("batch", pakOut.getBatch())
                    .eq("package_no", pakOut.getBarcode())
                    .eq("brand", pakOut.getMaktx()));
            if (pla != null) {
                PakoutVo pakOutVo = new PakoutVo();
                BeanUtils.copyProperties(pla, pakOutVo);
                BeanUtils.copyProperties(pakOut, pakOutVo);
                pakOutVoList.add(pakOutVo);
            }
        }
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("utf-8");
        String fileName = URLEncoder.encode("拣货单", "UTF-8");
        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
        EasyExcel.write(response.getOutputStream(), PakoutVo.class)
                .sheet("表1")
                .doWrite(pakOutVoList);
    }
}
src/main/java/com/zy/asrs/entity/param/PakOutExcelExportParam.java
New file
@@ -0,0 +1,24 @@
package com.zy.asrs.entity.param;
import lombok.Data;
import java.util.List;
/**
 * @author pang.jiabao
 * @description 拣货单excel导出条件实体
 * @createDate 2025/2/20 13:23
 */
@Data
public class PakOutExcelExportParam {
    private String type;
    private List<String> docNumList;
    private QueryWhere queryWhere;
    @Data
    public static class QueryWhere {
        private String doc_num;
        private String cust_name;
        private String create_time;
    }
}
src/main/webapp/static/js/picking/picking.js
@@ -2,6 +2,8 @@
var printMatCodeNos = [];
var ordernoo = "123";
var insTbCount = 0;
var selectedData = [];
var selectType = 'one';
layui.config({
    base: baseUrl + "/static/layui/lay/modules/"
}).use(['table','laydate', 'form', 'admin', 'layer'], function(){
@@ -27,11 +29,11 @@
        limit: 15,
        limits: [15, 30, 50, 100, 200, 500],
        // toolbar: '#toolbar',
        cellMinWidth: 50,
        // cellMinWidth: 50,
        height: 'full-120',
        cols: [[
            // {type: 'checkbox'}
            {type: 'numbers'}
            {type: 'checkbox'}
            ,{type: 'numbers', title: '序号'}
            ,{field: 'wrkNo', align: 'center',title: 'id', hide:true}
            ,{field: 'doc_num',title: '拣货单号' }
            ,{align: 'center', title: '二维码', toolbar: '#operate', width: 200 , hide:true}
@@ -40,7 +42,7 @@
            ,{field: 'custName', align: 'center',title: '客户名称', width: 160}
            ,{field: 'createTime$', align: 'center',title: '创建时间'}
            ,{field: 'updateTime$', align: 'center',title: '出库时间'}
            ,{align: 'center', title: '操作', toolbar: '#operate'}
            ,{align: 'center', title: '操作', toolbar: '#operate',width: 300}
        ]],
        request: {
@@ -48,7 +50,6 @@
            pageSize: 'limit'
        },
        parseData: function (res) {
            console.log(res);
            return {
                'code': res.code,
                'msg': res.msg,
@@ -72,6 +73,19 @@
                if ($(this).text() === '未出库') {
                    $('tr').eq(index).css("color", 'red');
                }
            });
            // 重新勾选
            var selectedOrderNos = selectedData.map(item => item.doc_num);
            var indexArr = []
            res.data.forEach(function (item,index) {
                if (selectedOrderNos.includes(item.doc_num)) {
                    indexArr.push(index)
                }
            })
            table.setRowChecked('saasLog',{
                index: indexArr
            });
        }
    });
@@ -233,13 +247,74 @@
        tableReload(false);
    });
    // 复选框勾选事件
    table.on('checkbox(saasLog)', function (obj) {
        if (obj.type === 'all' && obj.checked) {
            selectType = 'all'
        } else if (obj.type === 'one' && obj.checked) {
            selectType = 'one'
            selectedData.push(obj.data); // 选中时保存数据
        } else if (obj.type === 'one' && !obj.checked && obj.index !== undefined) {
            selectType = 'one'
            selectedData = selectedData.filter(item => item.doc_num !== obj.data.doc_num); // 取消时移除数据
        } else if (obj.type === 'all' && !obj.checked && obj.index === undefined) {
            selectType = 'one'
            selectedData = [];
        }
    });
    // 重置
    form.on('submit(reset)', function (data) {
        pageCurr = 1;
        selectedData = []
        selectType = 'one'
        clearFormVal($('#search-box'));
        tableReload(false);
    });
    // 导出
    form.on('submit(exportExcel)', function (data) {
        layer.confirm('确定导出Excel吗', {shadeClose: true}, function () {
            layer.closeAll();
            layer.load(1, {shade: [0.1, '#fff']});
            var reqData = {};
            reqData.type = selectType;
            if (reqData.type === 'one') {
                if (selectedData.length === 0) {
                    layer.msg('请先勾选数据')
                    layer.closeAll('loading');
                    return
                }
                reqData.docNumList = selectedData.map(item => item.doc_num);
            } else {
                var searchData = {};
                $.each($('#search-box [name]').serializeArray(), function() {
                    searchData[this.name] = this.value;
                });
                reqData.queryWhere = searchData
            }
            $.ajax({
                url: baseUrl + "/pakOut/excelExport3/auth",
                headers: {'token': localStorage.getItem('token')},
                data: JSON.stringify(reqData),
                contentType: 'application/json;charset=UTF-8',
                method: 'POST',
                xhrFields: {
                    responseType: 'blob'  // 处理返回的文件流
                },
                success: function (res) {
                    var link = document.createElement('a');
                    link.href = URL.createObjectURL(res);  // 使用 Blob 对象生成临时 URL
                    link.download = new Date().getTime() + '.xlsx';  // 设置下载的文件名
                    document.body.appendChild(link);
                    link.click();  // 触发下载
                    document.body.removeChild(link);
                }
            });
            layer.closeAll('loading');
        });
    });
    // 时间选择器
    function layDateRender(data) {
        setTimeout(function () {
src/main/webapp/views/picking/picking.html
@@ -50,6 +50,9 @@
                        </div>
                    </div>
                    <div class="layui-inline">&emsp;
                        <button class="layui-btn icon-btn" lay-filter="exportExcel" lay-submit>
                            <i class="layui-icon">&#xe67d;</i>导出
                        </button>
                        <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
                            <i class="layui-icon">&#xe615;</i>搜索
                        </button>