src/main/java/com/zy/asrs/controller/PakoutController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/param/PakOutExcelExportParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/static/js/picking/picking.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/views/picking/picking.html | ●●●●● 补丁 | 查看 | 原始文档 | 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">  <button class="layui-btn icon-btn" lay-filter="exportExcel" lay-submit> <i class="layui-icon"></i>导出 </button> <button class="layui-btn icon-btn" lay-filter="search" lay-submit> <i class="layui-icon"></i>搜索 </button>