package com.hz.employmentsite.services.impl.jobUserManager; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.hz.employmentsite.filter.exception.BaseException; import com.hz.employmentsite.mapper.*; import com.hz.employmentsite.mapper.cquery.JobUserCQuery; import com.hz.employmentsite.mapper.cquery.LabelCQuery; import com.hz.employmentsite.model.*; import com.hz.employmentsite.services.service.jobUserManager.JobUserService; import com.hz.employmentsite.util.DateUtils; import com.hz.employmentsite.util.StringUtils; import com.hz.employmentsite.vo.jobUserManager.JobUserVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; @Service("JobUserService") public class JobUserServiceImpl implements JobUserService { @Autowired private JobUserCQuery jobUserCQuery; @Autowired private StringUtils stringUtils; @Autowired private DateUtils dateUtils; @Autowired private PcEducationMapper pcEducationMapper; @Autowired private PcJobuserMapper pcJobuserMapper; @Autowired private PcExperienceMapper pcExperienceMapper; @Autowired private PcJobhuntMapper pcJobhuntMapper; @Autowired private PcPostMapper pcPostMapper; @Autowired private PcSiteUserMapper pcSiteUserMapper; @Autowired private PcLabelJobuserMapper pcLabelJobuserMapper; @Autowired private LabelCQuery labelCQuery; @Override public PageInfo getList(Integer pageIndex, Integer pageSize, List jobUserIDList, String name, String siteId, String jobStatus, Integer sexId, Integer educationTypeId, Integer emphasisTypeId, String createUserId, String workTime, String loginUserID, String regionCode, Date startDate, Date endDate) { String curLoginUserSiteID = ""; if (!stringUtils.IsNullOrEmpty(loginUserID)) { PcSiteUserExample siteUserExp = new PcSiteUserExample(); siteUserExp.or().andUserIDEqualTo(loginUserID); curLoginUserSiteID = pcSiteUserMapper.selectByExample(siteUserExp).get(0).getSiteID(); } PageHelper.startPage(pageIndex, pageSize); List list = jobUserCQuery.selectJobUserList(stringUtils.ListToInSql(jobUserIDList), name, siteId, jobStatus, sexId, educationTypeId, emphasisTypeId, createUserId, workTime, curLoginUserSiteID, regionCode, startDate, endDate); // 信息脱敏 list.forEach(item -> { item.setAge(dateUtils.getAgeForIdCard(item.getIdentityNumber())); item.setIdentityNumber(stringUtils.desensitizeData(item.getIdentityNumber(), "************", 3, 4)); item.setSocialSecurityCard(stringUtils.desensitizeData(item.getSocialSecurityCard(), "****", 3, 3)); }); PageInfo result = new PageInfo(list); return result; } @Override public List getDataList() { var dataList = getList(1, 99999, null, null, null, null, null, null, null, null, null, null, null, null, null).getList(); List dataResult = new ArrayList<>(); for (var item: dataList) { SelectProps itemResult = new SelectProps(); itemResult.setText(item.getName()); itemResult.setValue(item.getJobUserID()); dataResult.add(itemResult); } return dataResult; } @Override public JobUserVo getDataById(String id) { if (stringUtils.IsNullOrEmpty(id)) { return null; } JobUserVo data = jobUserCQuery.selectJobUserList(stringUtils.ListToInSql(Arrays.asList(id)), null, null, null, null, null, null, null, null,null,null,null,null).stream().findFirst().orElse(null); if(data!=null){ data.listLabel = labelCQuery.getUserLabelList(id); } return data; } @Override public List getJobUserEducationList(String jobuserID) { PcEducationExample exp = new PcEducationExample(); PcEducationExample.Criteria cro = exp.or(); cro.andJobuserIDEqualTo(jobuserID); List educationList = pcEducationMapper.selectByExample(exp); return educationList; } @Override public List getJobUserPcExperienceList(String jobuserID) { PcExperienceExample exp = new PcExperienceExample(); PcExperienceExample.Criteria cro = exp.or(); cro.andJobuserIDEqualTo(jobuserID); List educationList = pcExperienceMapper.selectByExample(exp); return educationList; } @Override public List getUserHuntList(String jobuserID) { PcJobhuntExample huntExp = new PcJobhuntExample(); PcJobhuntExample.Criteria huntCro = huntExp.or(); huntCro.andJobUserIDEqualTo(jobuserID); List jobHuntList = pcJobhuntMapper.selectByExample(huntExp); List professionIDList = new ArrayList<>(); if (jobHuntList.size()>0){ jobHuntList.stream().forEach(item->{ professionIDList.add(item.getProfessionID()); }); PcPostExample postExp = new PcPostExample(); PcPostExample.Criteria postCro = postExp.or(); postCro.andPostIDIn(professionIDList); List curPostList = pcPostMapper.selectByExample(postExp); return curPostList; }else{ return null; } } private int deleteEducation(List ids) { int educationRows = 0; PcEducationExample expEducation = new PcEducationExample(); PcEducationExample.Criteria croEducation = expEducation.or(); croEducation.andJobuserIDIn(ids); educationRows = pcEducationMapper.deleteByExample(expEducation); return educationRows; } private int deleteExperience(List ids) { int experienceRows = 0; PcExperienceExample expExperi = new PcExperienceExample(); PcExperienceExample.Criteria croExperi = expExperi.or(); croExperi.andJobuserIDIn(ids); experienceRows = pcExperienceMapper.deleteByExample(expExperi); return experienceRows; } @Override public int delete(List ids) { deleteEducation(ids); deleteExperience(ids); int result = 0; for(String curJobUserID: ids){ PcJobhuntExample jobHuntExample = new PcJobhuntExample(); jobHuntExample.or().andJobUserIDEqualTo(curJobUserID); var curJobUserHuntList = pcJobhuntMapper.selectByExample(jobHuntExample).stream().toList(); if( curJobUserHuntList != null && curJobUserHuntList.size()>0){ throw new BaseException("10004","所选求职人员已有关联的求职意向,不允许删除!"); }else{ int count = pcJobuserMapper.deleteByPrimaryKey(curJobUserID); if(count>0){ PcLabelJobuserExample labelEmp = new PcLabelJobuserExample(); labelEmp.or().andJobuserIDEqualTo(curJobUserID); pcLabelJobuserMapper.deleteByExample(labelEmp); } result+=count; } } return result; } @Override public int save(JobUserVo data, String userId) { int result = 0; PcJobuser dbData = pcJobuserMapper.selectByPrimaryKey(data.getJobUserID()); PcJobuserExample emp = new PcJobuserExample(); PcJobuserExample.Criteria cir = emp.or(); //验证身份证是否已经录入 if (dbData != null) { cir.andJobuserIDNotEqualTo(data.getJobUserID()); } cir.andIdentityNumberEqualTo(data.getIdentityNumber()); if (pcJobuserMapper.selectByExample(emp).size() > 0) { throw new BaseException("500", "该身份证号已绑定其他人员"); } //验证联系电话是否已经录入 cir = emp.or(); if (dbData != null) { cir.andJobuserIDNotEqualTo(data.getJobUserID()); } cir.andUserMobileEqualTo(data.getUserMobile()); if (pcJobuserMapper.selectByExample(emp).size() > 0) { throw new BaseException("500", "该联系电话已绑定其他人员"); } // 验证社保卡是否绑定 if (data.getSocialSecurityCard() != null && !data.getSocialSecurityCard().isBlank()) { cir = emp.or(); if (dbData != null) { cir.andJobuserIDNotEqualTo(data.getJobUserID()); } cir.andUserMobileEqualTo(data.getSocialSecurityCard()); if (pcJobuserMapper.selectByExample(emp).size() > 0) { throw new BaseException("500", "该社保卡已绑定其他人员"); } } if (dbData == null) { dbData = new PcJobuser(); dbData.setJobuserID(data.getJobUserID()); dbData.setSiteID(data.getSiteID()); dbData.setIdentityNumber(data.getIdentityNumber()); dbData.setName(data.getName()); dbData.setPyName(data.getPyName()); dbData.setEngName(data.getEngName()); dbData.setJobStatusID(data.getJobStatusID()); dbData.setSex(data.getSex()); dbData.setNation(data.getNation()); dbData.setPoliticsStatusID(data.getPoliticsStatusID()); dbData.setBirthplace(data.getBirthPlace()); dbData.setBirthDay(data.getBirthDay()); dbData.setFamilyNatureID(data.getFamilyNatureID()); dbData.setFamilyAddress(data.getFamilyAddress()); dbData.setCultureRank(data.getCultureRank()); dbData.setHealthID(data.getHealthID()); dbData.setHeight(data.getHeight()); dbData.setBloodTypeID(data.getBloodTypeID()); dbData.setVision(data.getVision()); dbData.setWeight(data.getWeight()); dbData.setMaritalStatusID(data.getMaritalStatusID()); dbData.setProvinceCode(data.getProvinceCode()); dbData.setRegionCode(data.getRegionCode()); dbData.setStreetCode(data.getStreetCode()); dbData.setUserName(data.getUserName()); dbData.setUserMobile(data.getUserMobile()); dbData.setAddress(data.getAddress()); dbData.setPostalCode(data.getPostalCode()); dbData.setEmail(data.getEmail()); dbData.setHobby(data.getHobby()); dbData.setKeyPersonTypeID(data.getKeyPersonTypeID()); dbData.setPersonalSkills(data.getPersonalSkills()); dbData.setSocialSecurityCard(data.getSocialSecurityCard()); dbData.setFinishSchool(data.getFinishSchool()); dbData.setProfession(data.getProfession()); dbData.setNativePlace(data.getNativePlace()); dbData.setIsFullTime(data.getIsFullTime()); dbData.setOccupationalCategory(data.getOccupationalCategory()); dbData.setOccupationalLevel(data.getOccupationalLevel()); dbData.setCreateTime(new Date()); dbData.setCreateUserID(userId); dbData.setLongitude(data.longitude); dbData.setLatitude(data.latitude); result = pcJobuserMapper.insert(dbData); } else { dbData.setJobuserID(data.getJobUserID()); dbData.setSiteID(data.getSiteID()); dbData.setIdentityNumber(data.getIdentityNumber()); dbData.setName(data.getName()); dbData.setPyName(data.getPyName()); dbData.setEngName(data.getEngName()); dbData.setSex(data.getSex()); dbData.setJobStatusID(data.getJobStatusID()); dbData.setNation(data.getNation()); dbData.setPoliticsStatusID(data.getPoliticsStatusID()); dbData.setBirthplace(data.getBirthPlace()); dbData.setBirthDay(data.getBirthDay()); dbData.setFamilyNatureID(data.getFamilyNatureID()); dbData.setFamilyAddress(data.getFamilyAddress()); dbData.setCultureRank(data.getCultureRank()); dbData.setHealthID(data.getHealthID()); dbData.setHeight(data.getHeight()); dbData.setBloodTypeID(data.getBloodTypeID()); dbData.setVision(data.getVision()); dbData.setWeight(data.getWeight()); dbData.setMaritalStatusID(data.getMaritalStatusID()); dbData.setProvinceCode(data.getProvinceCode()); dbData.setRegionCode(data.getRegionCode()); dbData.setStreetCode(data.getStreetCode()); dbData.setUserName(data.getUserName()); dbData.setUserMobile(data.getUserMobile()); dbData.setAddress(data.getAddress()); dbData.setPostalCode(data.getPostalCode()); dbData.setEmail(data.getEmail()); dbData.setHobby(data.getHobby()); dbData.setKeyPersonTypeID(data.getKeyPersonTypeID()); dbData.setPersonalSkills(data.getPersonalSkills()); dbData.setSocialSecurityCard(data.getSocialSecurityCard()); dbData.setFinishSchool(data.getFinishSchool()); dbData.setProfession(data.getProfession()); dbData.setNativePlace(data.getNativePlace()); dbData.setIsFullTime(data.getIsFullTime()); dbData.setOccupationalCategory(data.getOccupationalCategory()); dbData.setOccupationalLevel(data.getOccupationalLevel()); dbData.setModifyTime(new Date()); dbData.setModifyUserID(userId); dbData.setLongitude(data.getLongitude()); dbData.setLatitude(data.getLatitude()); result = pcJobuserMapper.updateByPrimaryKey(dbData); } if (result >= 1) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); String jobUserId = dbData.getJobuserID(); List ids = new ArrayList<>(); ids.add(jobUserId); deleteEducation(ids); deleteExperience(ids); data.getJobEducation().stream().forEach(x -> { PcEducation education = new PcEducation(); education.setEducationID(UUID.randomUUID().toString()); education.setJobuserID(jobUserId); education.setCultureRank(Integer.parseInt(x.get("cultureRank") + "")); education.setSchoolName(x.get("schoolName").toString()); try { education.setSchoolTime(dateFormat.parse(x.get("schoolTime").toString())); education.setOverTime(dateFormat.parse(x.get("overTime").toString())); } catch (ParseException e) { e.printStackTrace(); } education.setMajor(x.get("major").toString()); education.setCreateTime(new Date()); education.setCreateUserID(userId); pcEducationMapper.insert(education); }); data.getJobExperience().stream().forEach(x -> { PcExperience experience = new PcExperience(); experience.setExperienceID(UUID.randomUUID().toString()); experience.setJobuserID(jobUserId); try { experience.setStartTime(dateFormat.parse(x.get("startTime").toString())); experience.setEndTime(dateFormat.parse(x.get("endTime").toString())); } catch (ParseException e) { e.printStackTrace(); } experience.setDuties(x.get("duties").toString()); experience.setWorkAddress(x.get("workAddress").toString()); experience.setCreateTime(new Date()); experience.setCreateUserID(userId); pcExperienceMapper.insert(experience); }); } if(data.listLabel!=null && data.listLabel.size()>0){ PcLabelJobuserExample labelEmp = new PcLabelJobuserExample(); labelEmp.or().andJobuserIDEqualTo(data.getJobUserID()); pcLabelJobuserMapper.deleteByExample(labelEmp); data.listLabel.forEach(x->{ PcLabelJobuser labelModel = new PcLabelJobuser(); labelModel.setJobuserID(data.getJobUserID()); labelModel.setLabelID(x.getLabelID()); pcLabelJobuserMapper.insert(labelModel); }); } return result; } private int ifHadRepeatData(JobUserVo data){ var result = 0; PcJobuserExample jobUserExp1 = new PcJobuserExample(); jobUserExp1.or().andIdentityNumberEqualTo(data.getIdentityNumber()).andJobuserIDNotEqualTo(data.getJobUserID()); var ifRepeatIdentity = pcJobuserMapper.selectByExample(jobUserExp1).size()>0; PcJobuserExample jobUserExp2= new PcJobuserExample(); jobUserExp2.or().andUserMobileEqualTo(data.getUserMobile()).andJobuserIDNotEqualTo(data.getJobUserID()); var ifRepeatMobile = pcJobuserMapper.selectByExample(jobUserExp2).size()>0; result += ifRepeatIdentity? 1:0; result += ifRepeatMobile? 2:0; if(!stringUtils.IsNullOrEmpty(data.getSocialSecurityCard())){ PcJobuserExample jobUserExp3= new PcJobuserExample(); jobUserExp3.or().andUserMobileEqualTo(data.getSocialSecurityCard()).andJobuserIDNotEqualTo(data.getJobUserID()); var ifRepeatSocialCard = pcJobuserMapper.selectByExample(jobUserExp3).size()>0; result += ifRepeatSocialCard ? 4:0; } return result; } @Override public int baseInfoSave(JobUserVo data, String userId) { int result = 0; var repeatResult = ifHadRepeatData(data); switch (repeatResult){ default: case 0: break; case 1: throw new BaseException("1004","身份证号码已存在!"); case 2: throw new BaseException("1004","联系电话已存在!"); case 3: throw new BaseException("1004","身份证号码、联系电话重复!"); case 4: throw new BaseException("1004","社保卡已绑定其他人员!"); case 5: throw new BaseException("1004","身份证号码、社保卡号重复!"); case 6: throw new BaseException("1004","联系电话、社保卡号重复!"); case 7: throw new BaseException("1004","身份证号码、联系电话、社保卡号重复!"); } PcJobuser dbData = pcJobuserMapper.selectByPrimaryKey(data.getJobUserID()); if (dbData == null) { dbData = new PcJobuser(); dbData.setJobuserID(data.getJobUserID()); dbData.setSiteID(data.getSiteID()); dbData.setIdentityNumber(data.getIdentityNumber()); dbData.setName(data.getName()); dbData.setPyName(data.getPyName()); dbData.setEngName(data.getEngName()); dbData.setJobStatusID(data.getJobStatusID()); dbData.setSex(data.getSex()); dbData.setNation(data.getNation()); dbData.setPoliticsStatusID(data.getPoliticsStatusID()); dbData.setBirthplace(data.getBirthPlace()); dbData.setBirthDay(data.getBirthDay()); dbData.setFamilyNatureID(data.getFamilyNatureID()); dbData.setFamilyAddress(data.getFamilyAddress()); dbData.setCultureRank(data.getCultureRank()); dbData.setHealthID(data.getHealthID()); dbData.setHeight(data.getHeight()); dbData.setBloodTypeID(data.getBloodTypeID()); dbData.setVision(data.getVision()); dbData.setWeight(data.getWeight()); dbData.setMaritalStatusID(data.getMaritalStatusID()); dbData.setProvinceCode(data.getProvinceCode()); dbData.setRegionCode(data.getRegionCode()); dbData.setStreetCode(data.getStreetCode()); dbData.setUserName(data.getUserName()); dbData.setUserMobile(data.getUserMobile()); dbData.setAddress(data.getAddress()); dbData.setPostalCode(data.getPostalCode()); dbData.setEmail(data.getEmail()); dbData.setHobby(data.getHobby()); dbData.setKeyPersonTypeID(data.getKeyPersonTypeID()); dbData.setPersonalSkills(data.getPersonalSkills()); dbData.setOpenId(data.getOpenId()); dbData.setSocialSecurityCard(data.getSocialSecurityCard()); dbData.setFinishSchool(data.getFinishSchool()); dbData.setProfession(data.getProfession()); dbData.setIsFullTime(data.getIsFullTime()); dbData.setOccupationalCategory(data.getOccupationalCategory()); dbData.setOccupationalLevel(data.getOccupationalLevel()); dbData.setNativePlace(data.getNativePlace()); dbData.setCreateTime(new Date()); dbData.setCreateUserID(userId); result = pcJobuserMapper.insert(dbData); } else { dbData.setJobuserID(data.getJobUserID()); dbData.setSiteID(data.getSiteID()); dbData.setIdentityNumber(data.getIdentityNumber()); dbData.setName(data.getName()); dbData.setPyName(data.getPyName()); dbData.setEngName(data.getEngName()); dbData.setSex(data.getSex()); dbData.setJobStatusID(data.getJobStatusID()); dbData.setNation(data.getNation()); dbData.setPoliticsStatusID(data.getPoliticsStatusID()); dbData.setBirthplace(data.getBirthPlace()); dbData.setBirthDay(data.getBirthDay()); dbData.setFamilyNatureID(data.getFamilyNatureID()); dbData.setFamilyAddress(data.getFamilyAddress()); dbData.setCultureRank(data.getCultureRank()); dbData.setHealthID(data.getHealthID()); dbData.setHeight(data.getHeight()); dbData.setBloodTypeID(data.getBloodTypeID()); dbData.setVision(data.getVision()); dbData.setWeight(data.getWeight()); dbData.setMaritalStatusID(data.getMaritalStatusID()); dbData.setProvinceCode(data.getProvinceCode()); dbData.setRegionCode(data.getRegionCode()); dbData.setStreetCode(data.getStreetCode()); dbData.setUserName(data.getUserName()); dbData.setUserMobile(data.getUserMobile()); dbData.setAddress(data.getAddress()); dbData.setPostalCode(data.getPostalCode()); dbData.setEmail(data.getEmail()); dbData.setHobby(data.getHobby()); dbData.setKeyPersonTypeID(data.getKeyPersonTypeID()); dbData.setPersonalSkills(data.getPersonalSkills()); dbData.setOpenId(data.getOpenId()); dbData.setSocialSecurityCard(data.getSocialSecurityCard()); dbData.setFinishSchool(data.getFinishSchool()); dbData.setProfession(data.getProfession()); dbData.setIsFullTime(data.getIsFullTime()); dbData.setOccupationalCategory(data.getOccupationalCategory()); dbData.setOccupationalLevel(data.getOccupationalLevel()); dbData.setNativePlace(data.getNativePlace()); dbData.setModifyTime(new Date()); dbData.setModifyUserID(userId); result = pcJobuserMapper.updateByPrimaryKey(dbData); } return result; } }