package com.engine.shkjsecond.service.impl; import com.engine.core.impl.Service; import com.engine.shkjsecond.entity.*; import com.engine.shkjsecond.service.PersonnelResumeService; import lombok.SneakyThrows; import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.company.DepartmentComInfo; import weaver.hrm.company.SubCompanyComInfo; import weaver.hrm.job.EducationLevelComInfo; import weaver.hrm.job.JobTitlesComInfo; import weaver.hrm.resource.ResourceComInfo; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @Author liang.cheng * @Date 2025/2/17 14:41 * @Description: * @Version 1.0 */ public class PersonnelResumeServiceImpl extends Service implements PersonnelResumeService { @Override public Map getResumeList(String resourceId) { Map resultMap = new HashMap<>(8); PersonnelResumePo personnelResumePo = peopleMainInfo(resourceId); resultMap.put("lastName",personnelResumePo.getLastName()); resultMap.put("sex",personnelResumePo.getSex()); resultMap.put("birthday",personnelResumePo.getBirthday()); resultMap.put("resourceImageId",personnelResumePo.getImage()); resultMap.put("certificatenum",personnelResumePo.getCertificatenum()); resultMap.put("residence",personnelResumePo.getResidence()); resultMap.put("politicsStatus",personnelResumePo.getPoliticsStatus()); resultMap.put("nation",personnelResumePo.getNation()); resultMap.put("nativePlace",personnelResumePo.getNativePlace()); resultMap.put("height",personnelResumePo.getHeight()); resultMap.put("weight",personnelResumePo.getWeight()); resultMap.put("maritalStatus",personnelResumePo.getMarriage()); resultMap.put("companyStartDate",personnelResumePo.getCompanyStartDate()); resultMap.put("jobTitle",personnelResumePo.getJobTitle()); resultMap.put("department",personnelResumePo.getDepartment()); resultMap.put("educationlevel",personnelResumePo.getEducationlevel()); resultMap.put("graduateSchool",personnelResumePo.getGraduateSchool()); resultMap.put("major",personnelResumePo.getMajor()); resultMap.put("jobcall",personnelResumePo.getJobcall()); resultMap.put("address",personnelResumePo.getAddress()); resultMap.put("mobile",personnelResumePo.getMobile()); resultMap.put("email",personnelResumePo.getEmail()); resultMap.put("emergencyContact",personnelResumePo.getEmergencyContact()); resultMap.put("relationship",personnelResumePo.getRelationship()); resultMap.put("eContactMobile",personnelResumePo.getEContactMobile()); //表格拓展 resultMap.put("tables", peopleDetailInfo(resourceId)); return resultMap; } @Override public List peopleDetailInfo(String resourceId) { List tables = new ArrayList<>(); List columns = new ArrayList<>(); List> datas = new ArrayList<>(); //1.教育经历 List educationInfos = selectEducInfo(resourceId); //增加空行 educationInfos.add(EducationInfo.builder().build()); for (EducationInfo educationInfo : educationInfos) { List educTr = new ArrayList<>(); educTr.add(PersonnelResumeTd.builder().colspans(1).value(educationInfo.getStartAndEndDate()).rowspans(1).build()); educTr.add(PersonnelResumeTd.builder().colspans(2).value(educationInfo.getSchool()).rowspans(1).build()); educTr.add(PersonnelResumeTd.builder().colspans(1).value(educationInfo.getEducationalAndDegree()).rowspans(1).build()); educTr.add(PersonnelResumeTd.builder().colspans(3).value(educationInfo.getMajor()).rowspans(1).build()); datas.add(educTr); } columns.add(PersonnelResumeTd.builder().colspans(1).value("教育经历").rowspans(educationInfos.size()+1).build()); columns.add(PersonnelResumeTd.builder().colspans(1).value("起止时间").rowspans(1).build()); columns.add(PersonnelResumeTd.builder().colspans(2).value("学校").rowspans(1).build()); columns.add(PersonnelResumeTd.builder().colspans(1).value("学历/学位").rowspans(1).build()); columns.add(PersonnelResumeTd.builder().colspans(3).value("专业").rowspans(1).build()); tables.add(PersonnelResumeTable.builder().columns(columns).datas(datas).build()); //2.培训简历 columns = new ArrayList<>(); datas = new ArrayList<>(); List trainingInfos = selectTainInfo(resourceId); trainingInfos.add(TrainingInfo.builder().build()); for (TrainingInfo trainingInfo : trainingInfos ) { List trainTr = new ArrayList<>(); trainTr.add(PersonnelResumeTd.builder().colspans(1).value(trainingInfo.getStartAndEndDate()).rowspans(1).build()); trainTr.add(PersonnelResumeTd.builder().colspans(2).value(trainingInfo.getTrainingContent()).rowspans(1).build()); trainTr.add(PersonnelResumeTd.builder().colspans(2).value(trainingInfo.getTrainingCompany()).rowspans(1).build()); trainTr.add(PersonnelResumeTd.builder().colspans(2).value(trainingInfo.getCertifications()).rowspans(1).build()); datas.add(trainTr); } columns.add(PersonnelResumeTd.builder().colspans(1).value("培训经历").rowspans(trainingInfos.size()+1).build()); columns.add(PersonnelResumeTd.builder().colspans(1).value("起止时间").rowspans(1).build()); columns.add(PersonnelResumeTd.builder().colspans(2).value("培训内容").rowspans(1).build()); columns.add(PersonnelResumeTd.builder().colspans(2).value("培训单位").rowspans(1).build()); columns.add(PersonnelResumeTd.builder().colspans(2).value("所获证书").rowspans(1).build()); tables.add(PersonnelResumeTable.builder().columns(columns).datas(datas).build()); //3.工作经历(在盛虹工作经历) columns = new ArrayList<>(); datas = new ArrayList<>(); List workInfos = selectWorkInfo(resourceId); workInfos.add(WorkInfo.builder().build()); for (WorkInfo workInfo : workInfos){ List workTr = new ArrayList<>(); workTr.add(PersonnelResumeTd.builder().colspans(1).value(workInfo.getStartAndEndDate()).rowspans(1).build()); workTr.add(PersonnelResumeTd.builder().colspans(3).value(workInfo.getCompanyAndDepartment()).rowspans(1).build()); workTr.add(PersonnelResumeTd.builder().colspans(1).value(workInfo.getPosition()).rowspans(1).build()); workTr.add(PersonnelResumeTd.builder().colspans(2).value(workInfo.getPeople() + " / "+workInfo.getMobile()).rowspans(1).build()); datas.add(workTr); } columns.add(PersonnelResumeTd.builder().colspans(1).value("工作经历(在盛虹工作经历)").rowspans(workInfos.size()+1).build()); columns.add(PersonnelResumeTd.builder().colspans(1).value("起止时间").rowspans(1).build()); columns.add(PersonnelResumeTd.builder().colspans(3).value("公司名称/部门").rowspans(1).build()); columns.add(PersonnelResumeTd.builder().colspans(1).value("职位").rowspans(1).build()); columns.add(PersonnelResumeTd.builder().colspans(2).value("证明人及联系方式").rowspans(1).build()); tables.add(PersonnelResumeTable.builder().columns(columns).datas(datas).build()); //4.家庭状况 columns = new ArrayList<>(); datas = new ArrayList<>(); List familyInfos = selectFamilyInfo(resourceId); familyInfos.add(FamilyInfo.builder().build()); for (FamilyInfo familyInfo : familyInfos) { List familyTr = new ArrayList<>(); familyTr.add(PersonnelResumeTd.builder().colspans(1).value(familyInfo.getLastName()).rowspans(1).build()); familyTr.add(PersonnelResumeTd.builder().colspans(1).value(familyInfo.getRelationship()).rowspans(1).build()); familyTr.add(PersonnelResumeTd.builder().colspans(1).value(familyInfo.getAge()).rowspans(1).build()); familyTr.add(PersonnelResumeTd.builder().colspans(3).value(familyInfo.getWorkUnitAndPostion()).rowspans(1).build()); familyTr.add(PersonnelResumeTd.builder().colspans(1).value(familyInfo.getMobile()).rowspans(1).build()); datas.add(familyTr); } columns.add(PersonnelResumeTd.builder().colspans(1).value("家庭情况").rowspans(familyInfos.size()+1).build()); columns.add(PersonnelResumeTd.builder().colspans(1).value("姓名").rowspans(1).build()); columns.add(PersonnelResumeTd.builder().colspans(1).value("关系").rowspans(1).build()); columns.add(PersonnelResumeTd.builder().colspans(1).value("年龄").rowspans(1).build()); columns.add(PersonnelResumeTd.builder().colspans(3).value("工作单位/职位").rowspans(1).build()); columns.add(PersonnelResumeTd.builder().colspans(1).value("联系电话").rowspans(1).build()); tables.add(PersonnelResumeTable.builder().columns(columns).datas(datas).build()); return tables; } private List selectFamilyInfo(String resourceId) { RecordSet rs = new RecordSet(); List familyInfoList = new ArrayList<>(); rs.executeQuery("select jtcyxm,gx,nl,gzdw,zw,lxdh from uf_jtqk where xm = ?",resourceId); while (rs.next()) { familyInfoList.add(FamilyInfo.builder() .lastName(Util.null2String(rs.getString("jtcyxm"))) .relationship(selectWorkflowItem("gx","uf_jtqk",Util.getIntValue(rs.getString("gx")),String.valueOf(user.getLanguage()))) .age(Util.null2String(rs.getString("nl"))) .workUnitAndPostion(Util.null2String(rs.getString("gzdw")) +" / "+Util.null2String(rs.getString("zw"))) .mobile(Util.null2String(rs.getString("lxdh"))) .build()); } return familyInfoList; } @SneakyThrows private List selectWorkInfo(String resourceId) { RecordSet rs = new RecordSet(); List workInfoList = new ArrayList<>(); rs.executeQuery("select ksrq,jsrq,gsmc,bm,zw,zmr,zmrlxfs from uf_gzjlsh where xm = ?",resourceId); DepartmentComInfo deptComInfo = new DepartmentComInfo(); SubCompanyComInfo subComInfo = new SubCompanyComInfo(); ResourceComInfo rInfo = new ResourceComInfo(); JobTitlesComInfo jobTitlesComInfo = new JobTitlesComInfo(); while (rs.next()) { String date = Util.null2String(rs.getString("ksrq")) +" 至 " + Util.null2String(rs.getString("jsrq")); String bm = deptComInfo.getDepartmentName(Util.null2String(rs.getString("bm"))); String companyAndDept = subComInfo.getSubCompanyname(Util.null2String(rs.getString("gsmc"))) + " / " + bm; workInfoList.add(WorkInfo.builder() .startAndEndDate(date) .companyAndDepartment(companyAndDept) .position(jobTitlesComInfo.getJobTitlesname(Util.null2String(rs.getString("zw")))) .people(rInfo.getLastname(Util.null2String(rs.getString("zmr")))) .mobile(Util.null2String(rs.getString("zmrlxfs"))) .build()); } return workInfoList; } private List selectTainInfo(String resourceId) { RecordSet rs = new RecordSet(); List trainingInfoList = new ArrayList<>(); rs.executeQuery("select ksrq,jsrq,pxnr,pxdw,shzs from uf_pxjlsh where xm = ?",resourceId); while (rs.next()) { String date = Util.null2String(rs.getString("ksrq")) +" 至 " + Util.null2String(rs.getString("jsrq")); trainingInfoList.add(TrainingInfo.builder() .startAndEndDate(date) .trainingContent(Util.null2String(rs.getString("pxnr"))) .trainingCompany(Util.null2String(rs.getString("pxdw"))) .certifications(Util.null2String(rs.getString("shzs"))) .build()); } return trainingInfoList; } private List selectEducInfo(String resourceId) { RecordSet rs = new RecordSet(); EducationLevelComInfo eduComInfo = new EducationLevelComInfo(); List educationInfoList = new ArrayList<>(); rs.executeQuery("select ksrq,jsrq,byyx,xl,xw,zy from uf_jyjl where xm = ?",resourceId); while (rs.next()) { String date = Util.null2String(rs.getString("ksrq")) +" 至 " + Util.null2String(rs.getString("jsrq")); String educationalAndDegree = eduComInfo.getEducationLevelname(Util.null2String(rs.getString("xl"))) +" / " + selectWorkflowItem("xw","uf_jyjl",Util.getIntValue(rs.getString("xw")),String.valueOf(user.getLanguage())); educationInfoList.add(EducationInfo.builder() .startAndEndDate(date) .school(Util.null2String(rs.getString("byyx"))) .educationalAndDegree(educationalAndDegree) .major(Util.null2String(rs.getString("zy"))) .build()); } return educationInfoList; } @Override public PersonnelResumePo peopleMainInfo(String resourceId) { RecordSet rs = new RecordSet(); String residence = rs.getPropValue("shkjsecond", "residence"); String politicsStatus = rs.getPropValue("shkjsecond", "politicsStatus"); String nation = rs.getPropValue("shkjsecond", "nation"); String graduateSchool = rs.getPropValue("shkjsecond", "graduateSchool"); String major = rs.getPropValue("shkjsecond", "major"); String address = rs.getPropValue("shkjsecond", "address"); String emergencyContact = rs.getPropValue("shkjsecond", "emergencyContact"); String relationship = rs.getPropValue("shkjsecond", "relationship"); String eContactMobile = rs.getPropValue("shkjsecond", "eContactMobile"); rs.executeQuery("SELECT h.id, lastname, sex, birthday, resourceimageid, certificatenum, e."+residence+" as residence, " + " e."+politicsStatus+" as politicsStatus, e."+nation+" as nation, nativeplace, height, weight, maritalstatus, companystartdate, " + " b.jobtitlename AS jobTitle, a.departmentname as department, c.name as educationlevel, e."+graduateSchool+" as graduateSchool, " + " e."+major+" as major, d.name as jobcall, e."+address+" as address, mobile, email, e."+emergencyContact+" as emergencyContact, " + " e."+relationship+" as relationship, e."+eContactMobile+" as eContactMobile FROM hrmresource h " + " LEFT JOIN hrmdepartment a ON a.id = h.departmentid LEFT JOIN hrmjobtitles b ON b.id = h.jobtitle " + " LEFT JOIN hrmeducationlevel c on c.id = h.educationlevel LEFT JOIN hrmjobcall d on d.id = h.jobcall " + " LEFT JOIN cus_fielddata e on e.id = h.id and scopeid = 1 and scope = 'HrmCustomFieldByInfoType' where h.id = ?",resourceId); PersonnelResumePo personnelResumePo = PersonnelResumePo.builder().build(); if (rs.next()) { personnelResumePo.setLastName(Util.null2String(rs.getString("lastname"))); personnelResumePo.setSex(Util.null2String(rs.getString("sex"))); personnelResumePo.setBirthday(Util.null2String(rs.getString("birthday"))); personnelResumePo.setResourceImageId(Util.null2String(rs.getString("resourceimageid"))); personnelResumePo.setCertificatenum(Util.null2String(rs.getString("certificatenum"))); personnelResumePo.setResidence(selectItemValue(residence,Util.getIntValue(rs.getString("residence")),String.valueOf(user.getLanguage()))); personnelResumePo.setPoliticsStatus(selectItemValue(politicsStatus,Util.getIntValue(rs.getString("politicsStatus")),String.valueOf(user.getLanguage()))); personnelResumePo.setNation(selectNationName(Util.null2String(rs.getString("nation")))); personnelResumePo.setNativePlace(Util.null2String(rs.getString("nativeplace"))); personnelResumePo.setHeight(Util.null2String(rs.getString("height"))); personnelResumePo.setWeight(Util.null2String(rs.getString("weight"))); personnelResumePo.setMaritalStatus(Util.null2String(rs.getString("maritalstatus"))); personnelResumePo.setCompanyStartDate(Util.null2String(rs.getString("companystartdate"))); personnelResumePo.setJobTitle(Util.null2String(rs.getString("jobTitle"))); personnelResumePo.setDepartment(Util.null2String(rs.getString("department"))); personnelResumePo.setEducationlevel(Util.formatMultiLang(rs.getString("educationlevel"),String.valueOf(user.getLanguage()))); personnelResumePo.setGraduateSchool(Util.null2String(rs.getString("graduateSchool"))); personnelResumePo.setMajor(Util.null2String(rs.getString("major"))); personnelResumePo.setJobcall(Util.null2String(rs.getString("jobcall"))); personnelResumePo.setAddress(Util.null2String(rs.getString("address"))); personnelResumePo.setMobile(Util.null2String(rs.getString("mobile"))); personnelResumePo.setEmail(Util.null2String(rs.getString("email"))); personnelResumePo.setEmergencyContact(Util.null2String(rs.getString("emergencyContact"))); personnelResumePo.setRelationship(Util.null2String(rs.getString("relationship"))); personnelResumePo.setEContactMobile(Util.null2String(rs.getString("eContactMobile"))); } return personnelResumePo; } private String selectItemValue(String field, Integer selectValue,String language) { field = field.substring("field".length()); RecordSet rs = new RecordSet(); rs.executeQuery("select selectname from cus_selectitem where fieldid = ? and selectvalue = ?",field,selectValue); rs.next(); return Util.formatMultiLang(Util.null2String(rs.getString("selectname")),language); } private String selectWorkflowItem(String fieldName, String tableName,Integer selectValue,String language) { RecordSet rs = new RecordSet(); Integer fieldId = null; rs.executeQuery("select id from workflow_billfield where billid = (select id from workflow_bill where tablename = '"+tableName+"') \n" + " and fieldname = '"+fieldName+"'"); if (rs.next()) { fieldId = Util.getIntValue(rs.getString("id")); } rs.executeQuery("select selectname from workflow_selectitem where fieldid = ? and selectvalue = ?",fieldId,selectValue); rs.next(); return Util.formatMultiLang(Util.null2String(rs.getString("selectname")),language); } private String selectNationName(String value) { RecordSet rs = new RecordSet(); rs.executeQuery("select mz from uf_mzb where id = ?",value); rs.next(); return Util.null2String(rs.getString("mz")); } }