一、前台处理
前台jsp文件修改:commissionExStorage.jsp
主要任务:
1、增加按钮页面显示;
2、前台传递选择的所有id,拼接id成为一个字符串 传递到后台控制层;
//增加导出按钮
.jqGrid("navButtonAdd", toolbarTop, { caption: "导出明细单", buttonicon: "ace-icon fa fa-download bigger-120", onClickButton: exportFile, position: "last", title: "导出明细单", id: "importFileTemplate" }); //导出 function exportFile(){ var selectIds = $(grid_selector).jqGrid('getGridParam', 'selarrrow'); console.log(selectIds); //打印ids var lengthTmp = selectIds.length; if (lengthTmp < 1) { $.msg_show.error({"msg": "请您至少选择一条记录"}); return; }
//拼接id 传递字符串idsString var idsString = ""; for (let i = 0; i < lengthTmp; i++) { idsString = idsString+selectIds[i]+","; }
//去掉最后"," idsString=idsString.substring(0,idsString.lastIndexOf(',')); console.log("idsString" + idsString); location.href = "${ctx}/ex/commissionExStorage/export?ids="+idsString; }
其中处理一个点:关闭单选按钮,使得导出文件能够多选;
二、控制层处理
控制层文件:CommissionExStorageController.java
主要任务:
1、接受前台传递的idsString字符串;
2、调用服务层方法,返回ExportExcel对象,接着输出文件(命名);
/** * 导出Excel * @param idsString * @param request * @param response */ @RequestMapping(value = "export") @ResponseBody public void exportFile(@RequestParam("ids") String idsString, HttpServletRequest request, HttpServletResponse response) { try { ExportExcel ee = service.exportFile(idsString); ee.write(response, "委外出库单.xlsx"); } catch (IOException e) { e.printStackTrace(); } }
三、服务层文件处理
服务层文件:CommissionExStorageService.java
主要任务:
1、解析idsString字符串,获取对应的IWLS_BomEntry对象
2、写入列名、字段值,,返回ExportExcel对象;
/** * 导出Excel * @param idsString * @return */ @Transactional(rollbackFor = Exception.class,readOnly = false) public ExportExcel exportFile(@RequestParam("ids") String idsString){ List<String> idsList = Arrays.asList(idsString.split(",")); List<IWLS_BomEntry> entryList = idsList.stream().map(id -> { IWLS_BomEntry iwls_bomEntry = new IWLS_BomEntry(id); return findBOMBillChild(iwls_bomEntry); }).flatMap(List::stream).collect(Collectors.toList()); entryList = entryList.stream().collect(collectingAndThen(toCollection(() -> new TreeSet<>(Comparator.comparing(IWLS_BomEntry::getId))),ArrayList::new)); List<String> headerList = new ArrayList<>(); headerList.add("委外出库单号"); headerList.add("行号"); headerList.add("物料编码"); headerList.add("物料名称"); headerList.add("仓库名称"); headerList.add("货位编码"); headerList.add("库存总数量"); headerList.add("本仓库库存量"); headerList.add("需求数量"); headerList.add("项目编码"); ExportExcel ee = new ExportExcel("委外出库单", headerList); //处理数据 List<CommissionExportTemplate> commissionExportTemplateList = transferToCommissionExportTemplate(entryList); commissionExportTemplateList.sort(Comparator.comparing(CommissionExportTemplate::getSubcontractExWarehouseCode).thenComparing(commissionExportTemplate -> Double.parseDouble(commissionExportTemplate.getLineNum())).thenComparing(CommissionExportTemplate::getNewproject)); for (int i = 0; i < commissionExportTemplateList.size(); i++) { Row row = ee.addRow(); CommissionExportTemplate commissionExportTemplate = commissionExportTemplateList.get(i); ee.addCell(row,0,commissionExportTemplate.getSubcontractExWarehouseCode() == null?"":commissionExportTemplate.getSubcontractExWarehouseCode()); ee.addCell(row,1,commissionExportTemplate.getLineNum() == null?"":commissionExportTemplate.getLineNum()); ee.addCell(row,2,commissionExportTemplate.getMaterialCode() == null?"":commissionExportTemplate.getMaterialCode()); ee.addCell(row,3,commissionExportTemplate.getMaterialName() == null?"":commissionExportTemplate.getMaterialName()); ee.addCell(row,4,commissionExportTemplate.getDepotName() == null?"":commissionExportTemplate.getDepotName()); ee.addCell(row,5,commissionExportTemplate.getTrayCode() == null?"":commissionExportTemplate.getTrayCode()); ee.addCell(row,6,commissionExportTemplate.getSumNum() == null?"":commissionExportTemplate.getSumNum()); ee.addCell(row,7,commissionExportTemplate.getOnhandNum() == null?"":commissionExportTemplate.getOnhandNum()); ee.addCell(row,8,commissionExportTemplate.getNum() == null?"":commissionExportTemplate.getNum()); ee.addCell(row,9,commissionExportTemplate.getNewproject() == null?"":commissionExportTemplate.getNewproject()); } return ee; }
其中创建实体类:CommissionExportTemplate.java
package com.dhc.llm.ex.entity; import com.dhc.lmm.a1resourceManage.ToolCase.entity.BeanMethodAnnotation; import com.dhc.rad.common.utils.excel.annotation.ExcelField; /** * 委外出库单导出bean */ public class CommissionExportTemplate { //委外出库单号 private String subcontractExWarehouseCode; //行号 private String lineNum; //物料编码 private String materialCode; //物料名称 private String materialName; //仓库名称 private String depotName; //货位编码 private String trayCode; //库存总数量 private Double sumNum; //本仓库库存量 private Double onhandNum; //需求数量 private Double num; //项目编码 private String newproject; @ExcelField(title = "委外出库单号", align = 2, sort = 10) @BeanMethodAnnotation(order = 1) public String getSubcontractExWarehouseCode() { return subcontractExWarehouseCode; } public void setSubcontractExWarehouseCode(String subcontractExWarehouseCode) { this.subcontractExWarehouseCode = subcontractExWarehouseCode; } @ExcelField(title = "行号", align = 2, sort = 20) @BeanMethodAnnotation(order = 2) public String getLineNum() { return lineNum; } public void setLineNum(String lineNum) { this.lineNum = lineNum; } @ExcelField(title = "物料编码", align = 2, sort = 30) @BeanMethodAnnotation(order = 3) public String getMaterialCode() { return materialCode; } public void setMaterialCode(String materialCode) { this.materialCode = materialCode; } @ExcelField(title = "物料名称", align = 2, sort = 40) @BeanMethodAnnotation(order = 4) public String getMaterialName() { return materialName; } public void setMaterialName(String materialName) { this.materialName = materialName; } @ExcelField(title = "仓库名称", align = 2, sort = 50) @BeanMethodAnnotation(order = 5) public String getDepotName() { return depotName; } public void setDepotName(String depotName) { this.depotName = depotName; } @ExcelField(title = "货位编码", align = 2, sort = 60) @BeanMethodAnnotation(order = 6) public String getTrayCode() { return trayCode; } public void setTrayCode(String trayCode) { this.trayCode = trayCode; } @ExcelField(title = "库存总数量", align = 2, sort = 70) @BeanMethodAnnotation(order = 7) public Double getSumNum() { return sumNum; } public void setSumNum(Double sumNum) { this.sumNum = sumNum; } @ExcelField(title = "本仓库库存量", align = 2, sort = 80) @BeanMethodAnnotation(order = 8) public Double getOnhandNum() { return onhandNum; } public void setOnhandNum(Double onhandNum) { this.onhandNum = onhandNum; } @ExcelField(title = "需求数量", align = 2, sort = 90) @BeanMethodAnnotation(order = 9) public Double getNum() { return num; } public void setNum(Double num) { this.num = num; } @ExcelField(title = "项目编码", align = 2, sort = 100) @BeanMethodAnnotation(order = 10) public String getNewproject() { return newproject; } public void setNewproject(String newproject) { this.newproject = newproject; } }
四、Dao层修改
/** * 根据BomEntry的parentId查询BomBill的code * @return */ public String getBomBillCodeByBomEntryParentId(String parentId); }