增加Excel导出功能(例:委外出库明细单导出)

一、前台处理

前台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);
}

猜你喜欢

转载自www.cnblogs.com/caolixiang/p/11851785.html