diff --git a/src/com/engine/organization/service/impl/PersonnelResumeServiceImpl.java b/src/com/engine/organization/service/impl/PersonnelResumeServiceImpl.java index 35a5d7ff..4a271a4e 100644 --- a/src/com/engine/organization/service/impl/PersonnelResumeServiceImpl.java +++ b/src/com/engine/organization/service/impl/PersonnelResumeServiceImpl.java @@ -156,7 +156,7 @@ public class PersonnelResumeServiceImpl extends Service implements PersonnelResu } // 处理赋值的数据 List> dataMapList = getAllResumeList(); - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd"); +// SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd"); String filesPath = outPutPath + "wordZip" + File.separator + "全部简历"; String fileAllWordPath = outPutPath + "wordZip"; String wordName = "全体人员简历(合并)"; @@ -170,8 +170,7 @@ public class PersonnelResumeServiceImpl extends Service implements PersonnelResu //处理所有数据 for (int count = 0; count < dataMapList.size(); count++) { //处理单人数据 - Map paramMap = new HashMap<>(); - paramMap = dataMapList.get(count); + Map paramMap = dataMapList.get(count); WordUtil wordUtil = new WordUtil(); //返回一个新的xwpfDocument对象 File file = new File(filePath); @@ -217,13 +216,14 @@ public class PersonnelResumeServiceImpl extends Service implements PersonnelResu return resPath; } - // 简历相关表格,待拓展 + // 简历相关表格,待拓展(数据先写死) public List getPersonnelResumeTable(Integer uId){ List tables = new ArrayList<>(); List insurancesTitles = new ArrayList<>(); List familyInfoTitles = new ArrayList<>(); List insuranceDatas = new ArrayList<>(); + List> datas = new ArrayList<>(); insurancesTitles.add(PersonnelResumeColumn.builder().name("首次参保时间").colspans(2).rowspans(1).build()); insurancesTitles.add(PersonnelResumeColumn.builder().name("养老保险").colspans(1).rowspans(1).build()); insurancesTitles.add(PersonnelResumeColumn.builder().name("医疗保险").colspans(1).rowspans(1).build()); @@ -237,7 +237,24 @@ public class PersonnelResumeServiceImpl extends Service implements PersonnelResu insuranceDatas.add(PersonnelResumeColumn.builder().value("360").colspans(1).rowspans(1).build()); insuranceDatas.add(PersonnelResumeColumn.builder().value("180").colspans(1).rowspans(1).build()); insuranceDatas.add(PersonnelResumeColumn.builder().value("20000").colspans(1).rowspans(1).build()); - tables.add(PersonnelResumeTable.builder().title("二、社会保险及住房公积金缴纳情况(单位/元)").columns(insurancesTitles).datas(Collections.singletonList(insuranceDatas)).build()); + datas.add(insuranceDatas); + insuranceDatas = new ArrayList<>(); + insuranceDatas.add(PersonnelResumeColumn.builder().value("2022-11-02").colspans(2).rowspans(1).build()); + insuranceDatas.add(PersonnelResumeColumn.builder().value("90").colspans(1).rowspans(1).build()); + insuranceDatas.add(PersonnelResumeColumn.builder().value("46").colspans(1).rowspans(1).build()); + insuranceDatas.add(PersonnelResumeColumn.builder().value("361").colspans(1).rowspans(1).build()); + insuranceDatas.add(PersonnelResumeColumn.builder().value("181").colspans(1).rowspans(1).build()); + insuranceDatas.add(PersonnelResumeColumn.builder().value("20001").colspans(1).rowspans(1).build()); + datas.add(insuranceDatas); + insuranceDatas = new ArrayList<>(); + insuranceDatas.add(PersonnelResumeColumn.builder().value("2022-12-02").colspans(2).rowspans(1).build()); + insuranceDatas.add(PersonnelResumeColumn.builder().value("100").colspans(1).rowspans(1).build()); + insuranceDatas.add(PersonnelResumeColumn.builder().value("56").colspans(1).rowspans(1).build()); + insuranceDatas.add(PersonnelResumeColumn.builder().value("362").colspans(1).rowspans(1).build()); + insuranceDatas.add(PersonnelResumeColumn.builder().value("180").colspans(1).rowspans(1).build()); + insuranceDatas.add(PersonnelResumeColumn.builder().value("20000").colspans(1).rowspans(1).build()); + datas.add(insuranceDatas); + tables.add(PersonnelResumeTable.builder().title("二、社会保险及住房公积金缴纳情况(单位/元)").columns(insurancesTitles).datas(datas).build()); // 家庭情况 familyInfoTitles.add(PersonnelResumeColumn.builder().name("关系").colspans(1).rowspans(1).build()); @@ -294,13 +311,19 @@ public class PersonnelResumeServiceImpl extends Service implements PersonnelResu if (personnelResumeTable.getDatas().size() > 0) { List> datas = personnelResumeTable.getDatas(); if (datas.size() > 0) { - List dataList = datas.get(0); - for (int i = 0; i < length; i++) { - resultMap.put("${col" + t + i + "}", Util.null2String(dataList.get(i).getValue())); + for (int d = 0;d dataList = datas.get(d); + for (int i = 0; i < length; i++) {//i表示列 + //社保9行开始,家庭成员10行开始 + int row = 100 + i + d; + resultMap.put("${c" + t + i + row + "}", Util.null2String(dataList.get(i).getValue())); + } } } } } + resultMap.put("sbDataCounts",tables.get(0).getDatas().size()); + resultMap.put("jtDataCounts",tables.get(1).getDatas().size()); dataMapList.add(resultMap); } diff --git a/src/com/engine/organization/util/word/WordUtil.java b/src/com/engine/organization/util/word/WordUtil.java index 745dbf91..d7e25eec 100644 --- a/src/com/engine/organization/util/word/WordUtil.java +++ b/src/com/engine/organization/util/word/WordUtil.java @@ -154,6 +154,15 @@ public class WordUtil { List paras; while (iterator.hasNext()) { table = iterator.next(); + // 根据数据量从10行开始新增 + int sbLengths = (int) params.get("sbDataCounts"); + int jtLengths = (int) params.get("jtDataCounts"); + for (int i = 1; i < sbLengths;i++){ + insertRow(table,9,9+i,i); + } + for (int i = 1; i < jtLengths;i++){ + insertRow(table,12+sbLengths-1,12+sbLengths-1+i,i); + } rows = table.getRows(); for (XWPFTableRow row : rows) { cells = row.getTableCells(); @@ -167,6 +176,46 @@ public class WordUtil { } } + /** + * insertRow 在word表格中指定位置插入一行,并将某一行的样式复制到新增行 + * @param copyrowIndex 需要复制的行位置 + * @param newrowIndex 需要新增一行的位置 + * @param jgIndex 间隔行 + * */ + public static void insertRow(XWPFTable table, int copyrowIndex, int newrowIndex, int jgIndex) { + // 在表格中指定的位置新增一行 + XWPFTableRow targetRow = table.insertNewTableRow(newrowIndex); + // 获取需要复制行对象 + XWPFTableRow copyRow = table.getRow(copyrowIndex); + //复制行对象 + targetRow.getCtRow().setTrPr(copyRow.getCtRow().getTrPr()); + //或许需要复制的行的列 + List copyCells = copyRow.getTableCells(); + //复制列对象 + XWPFTableCell targetCell = null; + for (int i = 0; i < copyCells.size(); i++) { + XWPFTableCell copyCell = copyCells.get(i); + targetCell = targetRow.addNewTableCell(); + targetCell.getCTTc().setTcPr(copyCell.getCTTc().getTcPr()); + if (copyCell.getParagraphs() != null && copyCell.getParagraphs().size() > 0) { + XWPFParagraph targetParagraph = (XWPFParagraph)targetCell.getParagraphs().get(0); + XWPFParagraph copyParagraph = (XWPFParagraph)copyCell.getParagraphs().get(0); + targetParagraph.getCTP().setPPr(copyParagraph.getCTP().getPPr()); + if (copyParagraph.getRuns() != null && copyParagraph.getRuns().size() > 0) { + XWPFRun cellR = targetParagraph.createRun(); + String copyText = copyParagraph.getText(); + //截取到${c后两位,第一位:0表示社保表,1表示家庭成员表,第二位表示列 + String lastText = copyText.substring(copyText.length()-4,copyText.length()-1); + int num = Util.getIntValue(lastText)+ jgIndex; + String newText = copyText.substring(0,5) + num + "}"; + cellR.setText(newText); + cellR.setBold(((XWPFRun)copyParagraph.getRuns().get(0)).isBold()); + } + } + } + + } + /** * 正则匹配字符串 *