人员简历表格动态生成

pull/161/head^2
Mlin 2 years ago
parent fe30e86d12
commit 6cea2706df

@ -156,7 +156,7 @@ public class PersonnelResumeServiceImpl extends Service implements PersonnelResu
}
// 处理赋值的数据
List<Map<String, Object>> 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<String, Object> paramMap = new HashMap<>();
paramMap = dataMapList.get(count);
Map<String, Object> 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<PersonnelResumeTable> getPersonnelResumeTable(Integer uId){
List<PersonnelResumeTable> tables = new ArrayList<>();
List<PersonnelResumeColumn> insurancesTitles = new ArrayList<>();
List<PersonnelResumeColumn> familyInfoTitles = new ArrayList<>();
List<PersonnelResumeColumn> insuranceDatas = new ArrayList<>();
List<List<PersonnelResumeColumn>> 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<List<PersonnelResumeColumn>> datas = personnelResumeTable.getDatas();
if (datas.size() > 0) {
List<PersonnelResumeColumn> 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<datas.size();d++) {
List<PersonnelResumeColumn> 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);
}

@ -154,6 +154,15 @@ public class WordUtil {
List<XWPFParagraph> 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<XWPFTableCell> 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());
}
}
}
}
/**
*
*

Loading…
Cancel
Save