人员简历导出、压缩下载(20230105)

pull/123/head^2
Mlin 2 years ago
parent d81776680f
commit b515fdb78f

@ -19,11 +19,13 @@ import java.util.Base64;
*/
@Data
public class PersonnelResumePO {
private Integer id;
private String lastName;
private String sex;
private String birthday;
// resourceImageId;
private String image;
private String imageId;
private String nativePlace;
// policy;
private String politics;

@ -21,6 +21,8 @@ public interface HrmResourceMapper {
PersonnelResumePO getPersonnelResumeById(@Param("id") Integer id);
List<PersonnelResumePO> getPersonnelResumeList();
List<HrmFamilyInfoPO> getHrmFamilyInfoByUser(@Param("resourceId") Integer resourceId);
List<ResourcePO> getPersonnelScreening(@Param("subCompanyIds") List<Integer> subcompanyid1, @Param("departmentIds") List<Integer> departmentid, @Param("jobIds") List<Long> jobId, @Param("resourceIds") List<Long> resourceId);

@ -51,6 +51,29 @@
inner join hrmjobtitles b on b.id = h.jobtitle
where h.id = #{id}
</select>
<select id="getPersonnelResumeList"
resultType="com.engine.organization.entity.resume.po.PersonnelResumePO">
select h.id,
lastname,
sex,
birthday,
resourceimageid as image,
resourceimageid as imageId,
nativeplace,
policy as politics,
a.departmentname as department,
maritalstatus as marriage,
b.jobtitlename as jobTitle,
companystartdate,
workstartdate,
certificatenum as idCard,
residentplace as address,
mobile as telephone,
email
from hrmresource h
inner join hrmdepartment a on a.id = h.departmentid
inner join hrmjobtitles b on b.id = h.jobtitle
</select>
<select id="getHrmFamilyInfoByUser" resultType="com.engine.organization.entity.resume.po.HrmFamilyInfoPO">
select *
from HrmFamilyInfo

@ -111,52 +111,7 @@ public class PersonnelResumeServiceImpl extends Service implements PersonnelResu
resultMap.put("selfStatement", "");
// 简历相关表格,待拓展
List<PersonnelResumeTable> tables = new ArrayList<>();
List<PersonnelResumeColumn> insurancesTitles = new ArrayList<>();
List<PersonnelResumeColumn> familyInfoTitles = new ArrayList<>();
List<PersonnelResumeColumn> insuranceDatas = 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());
insurancesTitles.add(PersonnelResumeColumn.builder().name("失业保险").colspans(1).rowspans(1).build());
insurancesTitles.add(PersonnelResumeColumn.builder().name("住房公积金").colspans(1).rowspans(1).build());
insurancesTitles.add(PersonnelResumeColumn.builder().name("企业年金").colspans(1).rowspans(1).build());
insuranceDatas.add(PersonnelResumeColumn.builder().value("2022-10-02").colspans(2).rowspans(1).build());
insuranceDatas.add(PersonnelResumeColumn.builder().value("80").colspans(1).rowspans(1).build());
insuranceDatas.add(PersonnelResumeColumn.builder().value("36").colspans(1).rowspans(1).build());
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());
// 家庭情况
familyInfoTitles.add(PersonnelResumeColumn.builder().name("关系").colspans(1).rowspans(1).build());
familyInfoTitles.add(PersonnelResumeColumn.builder().name("姓名").colspans(1).rowspans(1).build());
familyInfoTitles.add(PersonnelResumeColumn.builder().name("工作单位").colspans(2).rowspans(1).build());
familyInfoTitles.add(PersonnelResumeColumn.builder().name("职务").colspans(1).rowspans(1).build());
familyInfoTitles.add(PersonnelResumeColumn.builder().name("住址").colspans(2).rowspans(1).build());
List<HrmFamilyInfoPO> hrmFamilyInfoByUser = getHrmResourceMapper().getHrmFamilyInfoByUser(uId);
if (CollectionUtils.isEmpty(hrmFamilyInfoByUser)) {
hrmFamilyInfoByUser.add(new HrmFamilyInfoPO());
}
List<List<PersonnelResumeColumn>> objects = new ArrayList<>();
for (HrmFamilyInfoPO hrmFamilyInfoPO : hrmFamilyInfoByUser) {
List<PersonnelResumeColumn> familyInfoDatas = new ArrayList<>();
familyInfoDatas.add(PersonnelResumeColumn.builder().value(hrmFamilyInfoPO.getTitle()).colspans(1).rowspans(1).build());
familyInfoDatas.add(PersonnelResumeColumn.builder().value(hrmFamilyInfoPO.getMember()).colspans(1).rowspans(1).build());
familyInfoDatas.add(PersonnelResumeColumn.builder().value(hrmFamilyInfoPO.getCompany()).colspans(2).rowspans(1).build());
familyInfoDatas.add(PersonnelResumeColumn.builder().value(hrmFamilyInfoPO.getJobTitle()).colspans(1).rowspans(1).build());
familyInfoDatas.add(PersonnelResumeColumn.builder().value(hrmFamilyInfoPO.getAddress()).colspans(2).rowspans(1).build());
objects.add(familyInfoDatas);
}
tables.add(PersonnelResumeTable.builder().title("三、家庭成员信息(包括父母、配偶、子女)").columns(familyInfoTitles).datas(objects).build());
resultMap.put("tables", tables);
resultMap.put("tables", getPersonnelResumeTable(uId));
return resultMap;
}
@ -191,20 +146,14 @@ public class PersonnelResumeServiceImpl extends Service implements PersonnelResu
List<CustomXWPFDocument> xwpfDocuments = new ArrayList<>();
//模板地址
String outPutPath = GCONST.getRootPath() + "hrm" + File.separator + "import" + File.separator + "template" + File.separator;
String filePath = outPutPath + "template0104.docx";
String filePath = outPutPath + "PerResume.docx";
//创建压缩包位置
File fileZip = new File(outPutPath + "wordZip");
if (!fileZip.exists()) {
fileZip.mkdirs();
}
// 处理赋值的数据
Map<String, Object> dataMap = new HashMap<>();
Map<String, Object> resMap = getResumeList(22);
Map<String, Object> resMap2 = getResumeList(29);
List<Map<String, Object>> dataMapList = new ArrayList<>();
dataMapList.add(resMap);
dataMapList.add(resMap2);
List<Map<String, Object>> dataMapList = getAllResumeList();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
String filesPath = outPutPath + "wordZip" + File.separator + simpleDateFormat.format(new Date());
String fileAllWordPath = outPutPath + "wordZip";
@ -213,27 +162,7 @@ public class PersonnelResumeServiceImpl extends Service implements PersonnelResu
for (int count = 0; count < dataMapList.size(); count++) {
//处理单人数据
Map<String, Object> paramMap = new HashMap<>();
for (Map.Entry<String, Object> entry : dataMapList.get(count).entrySet()) {
System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
paramMap.put("${" + entry.getKey() + "}", entry.getValue());
}
if (dataMapList.get(count).containsKey("tables")) {
List<PersonnelResumeTable> tables = (List<PersonnelResumeTable>) dataMapList.get(count).get("tables");
for (int t = 0; t < tables.size(); t++) {
PersonnelResumeTable personnelResumeTable = tables.get(t);
int length = personnelResumeTable.getColumns().size();
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++) {
paramMap.put("${col" + t + i + "}", Util.null2String(dataList.get(i).getValue()));
}
}
}
}
}
paramMap.put("${@image}", "1198");
paramMap = dataMapList.get(count);
WordUtil wordUtil = new WordUtil();
//返回一个新的xwpfDocument对象
File file = new File(filePath);
@ -286,6 +215,96 @@ 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<>();
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());
insurancesTitles.add(PersonnelResumeColumn.builder().name("失业保险").colspans(1).rowspans(1).build());
insurancesTitles.add(PersonnelResumeColumn.builder().name("住房公积金").colspans(1).rowspans(1).build());
insurancesTitles.add(PersonnelResumeColumn.builder().name("企业年金").colspans(1).rowspans(1).build());
insuranceDatas.add(PersonnelResumeColumn.builder().value("2022-10-02").colspans(2).rowspans(1).build());
insuranceDatas.add(PersonnelResumeColumn.builder().value("80").colspans(1).rowspans(1).build());
insuranceDatas.add(PersonnelResumeColumn.builder().value("36").colspans(1).rowspans(1).build());
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());
// 家庭情况
familyInfoTitles.add(PersonnelResumeColumn.builder().name("关系").colspans(1).rowspans(1).build());
familyInfoTitles.add(PersonnelResumeColumn.builder().name("姓名").colspans(1).rowspans(1).build());
familyInfoTitles.add(PersonnelResumeColumn.builder().name("工作单位").colspans(2).rowspans(1).build());
familyInfoTitles.add(PersonnelResumeColumn.builder().name("职务").colspans(1).rowspans(1).build());
familyInfoTitles.add(PersonnelResumeColumn.builder().name("住址").colspans(2).rowspans(1).build());
List<HrmFamilyInfoPO> hrmFamilyInfoByUser = getHrmResourceMapper().getHrmFamilyInfoByUser(uId);
if (CollectionUtils.isEmpty(hrmFamilyInfoByUser)) {
hrmFamilyInfoByUser.add(new HrmFamilyInfoPO());
}
List<List<PersonnelResumeColumn>> objects = new ArrayList<>();
for (HrmFamilyInfoPO hrmFamilyInfoPO : hrmFamilyInfoByUser) {
List<PersonnelResumeColumn> familyInfoDatas = new ArrayList<>();
familyInfoDatas.add(PersonnelResumeColumn.builder().value(hrmFamilyInfoPO.getTitle()).colspans(1).rowspans(1).build());
familyInfoDatas.add(PersonnelResumeColumn.builder().value(hrmFamilyInfoPO.getMember()).colspans(1).rowspans(1).build());
familyInfoDatas.add(PersonnelResumeColumn.builder().value(hrmFamilyInfoPO.getCompany()).colspans(2).rowspans(1).build());
familyInfoDatas.add(PersonnelResumeColumn.builder().value(hrmFamilyInfoPO.getJobTitle()).colspans(1).rowspans(1).build());
familyInfoDatas.add(PersonnelResumeColumn.builder().value(hrmFamilyInfoPO.getAddress()).colspans(2).rowspans(1).build());
objects.add(familyInfoDatas);
}
tables.add(PersonnelResumeTable.builder().title("三、家庭成员信息(包括父母、配偶、子女)").columns(familyInfoTitles).datas(objects).build());
return tables;
}
public List<Map<String, Object>> getAllResumeList() {
List<PersonnelResumePO> personnelResumeList = getHrmResourceMapper().getPersonnelResumeList();
OrganizationAssert.notNull(personnelResumeList, "未找到对应人员");
List<Map<String, Object>> dataMapList = new ArrayList<>();
for (PersonnelResumePO personnelResumePO : personnelResumeList) {
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("${lastName}", Util.null2String(personnelResumePO.getLastName()));
resultMap.put("${sex}", Util.null2String(personnelResumePO.getSex()));
resultMap.put("${birthday}", Util.null2String(personnelResumePO.getBirthday()));
resultMap.put("${@image}", Util.null2String(personnelResumePO.getImageId()));
resultMap.put("${native}", Util.null2String(personnelResumePO.getNativePlace()));
resultMap.put("${politics}", Util.null2String(personnelResumePO.getPolitics()));
resultMap.put("${department}", Util.null2String(personnelResumePO.getDepartment()));
resultMap.put("${marriage}", Util.null2String(personnelResumePO.getMarriage()));
resultMap.put("${jobtitle}", Util.null2String(personnelResumePO.getJobTitle()));
resultMap.put("${companystartdate}", Util.null2String(personnelResumePO.getCompanyStartDate()));
resultMap.put("${workstartdate}", Util.null2String(personnelResumePO.getWorkStartDate()));
resultMap.put("${idCard}", Util.null2String(personnelResumePO.getIdCard()));
resultMap.put("${address}", Util.null2String(personnelResumePO.getAddress()));
resultMap.put("${telephone}", Util.null2String(personnelResumePO.getTelephone()));
resultMap.put("${email}", Util.null2String(personnelResumePO.getEmail()));
resultMap.put("${selfStatement}", "");
List<PersonnelResumeTable> tables = getPersonnelResumeTable(personnelResumePO.getId());
for (int t = 0; t < tables.size(); t++) {
PersonnelResumeTable personnelResumeTable = tables.get(t);
int length = personnelResumeTable.getColumns().size();
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()));
}
}
}
}
dataMapList.add(resultMap);
}
return dataMapList;
}
//两个对象进行追加
public CustomXWPFDocument mergeWord(CustomXWPFDocument document, CustomXWPFDocument doucDocument2) throws Exception {
CustomXWPFDocument src1Document = document;
@ -416,7 +435,7 @@ public class PersonnelResumeServiceImpl extends Service implements PersonnelResu
}
return flag;
}
public List<SearchTree> getFilterDatas(String id, String type, String keyword) {
@Override
public List<SearchConditionItem> personnelScreening() {
List<SearchConditionItem> items = new ArrayList<>();

@ -1,14 +1,10 @@
package com.engine.organization.util.word;
import org.apache.poi.ooxml.POIXMLDocument;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl;
import org.springframework.beans.BeanUtils;
import weaver.file.ImageFileManager;
import weaver.general.Util;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
@ -104,6 +100,9 @@ public class WordUtil {
break;
}else{
String value= params.get(key).toString();
if (StringUtils.isBlank(value)){
break;
}
int length = para.getRuns().size();
if (length > 0) {
for (int i = (length - 1); i >= 0; i--) {

Loading…
Cancel
Save