Search in sources :

Example 1 with DecPositionBO

use of com.bc.pmpheep.back.bo.DecPositionBO in project pmph by BCSquad.

the class ExcelHelper method fromDecPositionBOList.

/**
 * 根据教材遴选表业务对象(DecPositionBO)集合创建工作簿,适用于主编/副主编导出
 *
 * @param dataSource
 *            DecPositionBO业务对象集合
 * @param sheetName
 *            工作表名称
 * @return 根据Map集合创建的工作簿
 */
public Workbook fromDecPositionBOList(List<DecPositionBO> dataSource, String sheetName) {
    Workbook workbook = new HSSFWorkbook();
    Sheet sheet = workbook.createSheet(sheetName);
    Row header = sheet.createRow(0);
    header.createCell(0).setCellValue("书序");
    header.createCell(1).setCellValue("书名");
    header.createCell(2).setCellValue("版次");
    header.createCell(3).setCellValue("序号");
    header.createCell(4).setCellValue("姓名");
    header.createCell(5).setCellValue("申报单位");
    header.createCell(6).setCellValue("编写职位");
    // 设置表头样式
    headerStyleSetup(workbook, 1);
    /**
     * 重新设置头背景颜色end **
     */
    for (int i = 0; i < 7; i++) {
        Cell cell = workbook.getSheet(sheetName).getRow(0).getCell(i);
        CellStyle style = cell.getCellStyle();
        style.setFillBackgroundColor(HSSFColorPredefined.GREY_50_PERCENT.getIndex());
        cell.setCellStyle(style);
    }
    /**
     * 重新设置头背景颜色end **
     */
    /* 设置行计数器 */
    int rowCount = 1;
    if (null != dataSource && !dataSource.isEmpty()) {
        /* 遍历list中的对象 */
        for (DecPositionBO bo : dataSource) {
            List<WriterBO> writers = bo.getWriters();
            if (CollectionUtil.isEmpty(writers)) {
                continue;
            }
            Integer zhuBianTotalNum = 0;
            Integer fuZhuBianTotalNum = 0;
            for (WriterBO writer : writers) {
                Integer chosenPosition = writer.getChosenPosition();
                if (null != chosenPosition && (chosenPosition == 12 || chosenPosition == 4)) {
                    zhuBianTotalNum++;
                } else if (null != chosenPosition && (chosenPosition == 10 || chosenPosition == 2)) {
                    fuZhuBianTotalNum++;
                }
            }
            Row row = sheet.createRow(rowCount);
            row.createCell(0).setCellValue(bo.getSort());
            row.createCell(1).setCellValue(bo.getTextbookName());
            row.createCell(2).setCellValue(bo.getTextbookRound());
            int writerNum = 1;
            for (WriterBO writer : writers) {
                if (writerNum > 1) {
                    row = sheet.createRow(rowCount);
                    row.createCell(0);
                    row.createCell(1);
                    row.createCell(2);
                }
                row.createCell(3).setCellValue(String.valueOf(writerNum));
                row.createCell(4).setCellValue(writer.getRealname());
                row.createCell(5).setCellValue(writer.getChosenOrgName());
                Integer chosenPosition = writer.getChosenPosition();
                if (null == chosenPosition) {
                    continue;
                }
                String position = "";
                String rank = "";
                if (null != writer.getRank()) {
                    rank = String.valueOf(writer.getRank());
                }
                if (null != chosenPosition && chosenPosition == 12) {
                    position = "主编 " + zhuBianTotalNum + "-" + rank + ",数字编委";
                } else if (null != chosenPosition && chosenPosition == 4) {
                    position = "主编 " + zhuBianTotalNum + "-" + rank;
                } else if (null != chosenPosition && chosenPosition == 10) {
                    position = "副主编 " + fuZhuBianTotalNum + "-" + rank + ",数字编委";
                } else if (null != chosenPosition && chosenPosition == 2) {
                    position = "副主编 " + fuZhuBianTotalNum + "-" + rank;
                } else if (null != chosenPosition && chosenPosition == 9) {
                    position = "编委,数字编委";
                } else if (null != chosenPosition && chosenPosition == 1) {
                    position = "编委";
                }
                row.createCell(6).setCellValue(position);
                writerNum++;
                rowCount++;
            }
        }
    }
    int[] maxLength = { 2, 12, 2, 2, 5, 15, 9 };
    return dataStyleSetup(workbook, 1, rowCount, new ColumnProperties(7, maxLength));
}
Also used : WriterBO(com.bc.pmpheep.back.bo.WriterBO) HSSFWorkbook(org.apache.poi.hssf.usermodel.HSSFWorkbook) Workbook(org.apache.poi.ss.usermodel.Workbook) HSSFWorkbook(org.apache.poi.hssf.usermodel.HSSFWorkbook) DecPositionBO(com.bc.pmpheep.back.bo.DecPositionBO) Row(org.apache.poi.ss.usermodel.Row) CellStyle(org.apache.poi.ss.usermodel.CellStyle) Sheet(org.apache.poi.ss.usermodel.Sheet) Cell(org.apache.poi.ss.usermodel.Cell)

Example 2 with DecPositionBO

use of com.bc.pmpheep.back.bo.DecPositionBO in project pmph by BCSquad.

the class FileDownLoadController method exportEditors.

/**
 * 角色遴选 批量导出主编、副主编
 *
 * @param textbookIds
 * @param request
 * @param response
 * @throws IllegalAccessException
 */
@LogDetail(businessType = BUSSINESS_TYPE, logRemark = "角色遴选 批量导出主编、副主编")
@RequestMapping(value = "/position/exportEditors", method = RequestMethod.GET)
public void exportEditors(Long[] textbookIds, HttpServletRequest request, HttpServletResponse response) throws IllegalAccessException, Exception {
    List<DecPositionBO> list;
    Workbook workbook = null;
    try {
        list = textbookService.getExcelDecByMaterialId(textbookIds);
        workbook = excelHelper.fromDecPositionBOList(list, "主编-副主编");
    } catch (CheckedServiceException | IllegalArgumentException e) {
        throw new CheckedServiceException(CheckedExceptionBusiness.FILE, CheckedExceptionResult.FILE_CREATION_FAILED, "数据表格化的时候失败");
    }
    // 通过书籍id获取教材信息
    Material material = materialService.getMaterialByName(textbookIds);
    String fileName = returnFileName(request, material.getMaterialName() + ".xls");
    response.setCharacterEncoding("utf-8");
    response.setContentType("application/force-download");
    response.setHeader("Content-Disposition", "attachment;fileName=" + fileName);
    try (OutputStream out = response.getOutputStream()) {
        workbook.write(out);
        out.flush();
        out.close();
    } catch (Exception e) {
        logger.warn("文件下载时出现IO异常:{}", e.getMessage());
        throw new CheckedServiceException(CheckedExceptionBusiness.FILE, CheckedExceptionResult.FILE_DOWNLOAD_FAILED, "文件在传输时中断");
    }
}
Also used : BufferedOutputStream(java.io.BufferedOutputStream) OutputStream(java.io.OutputStream) CheckedServiceException(com.bc.pmpheep.service.exception.CheckedServiceException) Material(com.bc.pmpheep.back.po.Material) Workbook(org.apache.poi.ss.usermodel.Workbook) CheckedServiceException(com.bc.pmpheep.service.exception.CheckedServiceException) UnsupportedEncodingException(java.io.UnsupportedEncodingException) IOException(java.io.IOException) DecPositionBO(com.bc.pmpheep.back.bo.DecPositionBO) LogDetail(com.bc.pmpheep.annotation.LogDetail) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Example 3 with DecPositionBO

use of com.bc.pmpheep.back.bo.DecPositionBO in project pmph by BCSquad.

the class ExcelHelperTest method makeDecPositionBOList.

private List<DecPositionBO> makeDecPositionBOList() {
    List<DecPositionBO> list = new ArrayList<>(3);
    for (int i = 1; i < 4; i++) {
        DecPositionBO bo = new DecPositionBO();
        bo.setSort(i);
        bo.setTextbookName("书" + i);
        bo.setTextbookRound(i + 5);
        List<WriterBO> writers = new ArrayList<>();
        for (int j = 0; j < 10; j++) {
            WriterBO writer = new WriterBO();
            writer.setRealname("随机姓名" + j);
            writer.setChosenOrgName("随机学校" + j);
            switch(j % 4) {
                case 0:
                    writer.setChosenPosition(1);
                    break;
                case 1:
                    writer.setChosenPosition(2);
                    break;
                case 2:
                    writer.setChosenPosition(4);
                    break;
                case 3:
                    writer.setChosenPosition(8);
                    break;
            }
            writer.setRank(j + 1);
            writers.add(writer);
        }
        bo.setWriters(writers.toString());
        list.add(bo);
    }
    return list;
}
Also used : ArrayList(java.util.ArrayList) WriterBO(com.bc.pmpheep.back.bo.WriterBO) DecPositionBO(com.bc.pmpheep.back.bo.DecPositionBO)

Example 4 with DecPositionBO

use of com.bc.pmpheep.back.bo.DecPositionBO in project pmph by BCSquad.

the class ExcelHelperTest method fromDecPositionBOList.

@Test
@Ignore
public void fromDecPositionBOList() throws IOException, SecurityException, IllegalArgumentException, IllegalAccessException {
    List<DecPositionBO> list = makeDecPositionBOList();
    Workbook workbook = excelHelper.fromDecPositionBOList(list, "遴选表");
    String path = this.getClass().getResource("/").getPath().concat("position.xls");
    FileOutputStream out = new FileOutputStream(path);
    workbook.write(out);
    out.flush();
    out.close();
}
Also used : FileOutputStream(java.io.FileOutputStream) Workbook(org.apache.poi.ss.usermodel.Workbook) DecPositionBO(com.bc.pmpheep.back.bo.DecPositionBO) Ignore(org.junit.Ignore) Test(org.junit.Test) BaseTest(com.bc.pmpheep.test.BaseTest)

Aggregations

DecPositionBO (com.bc.pmpheep.back.bo.DecPositionBO)4 Workbook (org.apache.poi.ss.usermodel.Workbook)3 WriterBO (com.bc.pmpheep.back.bo.WriterBO)2 LogDetail (com.bc.pmpheep.annotation.LogDetail)1 Material (com.bc.pmpheep.back.po.Material)1 CheckedServiceException (com.bc.pmpheep.service.exception.CheckedServiceException)1 BaseTest (com.bc.pmpheep.test.BaseTest)1 BufferedOutputStream (java.io.BufferedOutputStream)1 FileOutputStream (java.io.FileOutputStream)1 IOException (java.io.IOException)1 OutputStream (java.io.OutputStream)1 UnsupportedEncodingException (java.io.UnsupportedEncodingException)1 ArrayList (java.util.ArrayList)1 HSSFWorkbook (org.apache.poi.hssf.usermodel.HSSFWorkbook)1 Cell (org.apache.poi.ss.usermodel.Cell)1 CellStyle (org.apache.poi.ss.usermodel.CellStyle)1 Row (org.apache.poi.ss.usermodel.Row)1 Sheet (org.apache.poi.ss.usermodel.Sheet)1 Ignore (org.junit.Ignore)1 Test (org.junit.Test)1