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.services.service.system.DictionaryService; import com.hz.employmentsite.util.DateUtils; import com.hz.employmentsite.util.StringUtils; import com.hz.employmentsite.vo.jobUserManager.JobHuntVo; 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.*; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; @Service("JobUserService") public class JobUserServiceImpl implements JobUserService { @Autowired private JobUserCQuery jobUserCQuery; @Autowired private StringUtils stringUtils; @Autowired private DateUtils dateUtils; @Autowired private DictionaryService dictionaryService; @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 PcSiteMapper pcSiteMapper; @Autowired private PcLabelJobuserMapper pcLabelJobuserMapper; @Autowired private PcOccupationalMapper pcOccupationalMapper; @Autowired private AreaCodeMapper areaCodeMapper; @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); }); } PcLabelJobuserExample labelEmp = new PcLabelJobuserExample(); labelEmp.or().andJobuserIDEqualTo(data.getJobUserID()); pcLabelJobuserMapper.deleteByExample(labelEmp); if(data.listLabel!=null && data.listLabel.size()>0){ 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.setLongitude(data.getLongitude()); dbData.setLatitude(data.getLatitude()); 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.setLongitude(data.getLongitude()); dbData.setLatitude(data.getLatitude()); dbData.setModifyTime(new Date()); dbData.setModifyUserID(userId); result = pcJobuserMapper.updateByPrimaryKey(dbData); } PcLabelJobuserExample labelEmp = new PcLabelJobuserExample(); labelEmp.or().andJobuserIDEqualTo(data.getJobUserID()); pcLabelJobuserMapper.deleteByExample(labelEmp); if(data.listLabel!=null && data.listLabel.size()>0){ data.listLabel.forEach(x->{ PcLabelJobuser labelModel = new PcLabelJobuser(); labelModel.setJobuserID(data.getJobUserID()); labelModel.setLabelID(x.getLabelID()); pcLabelJobuserMapper.insert(labelModel); }); } return result; } //验证身份证号是否合法 private boolean identityNumberIsValid(String idNumber) { if (idNumber == null || (idNumber.length() != 18 && idNumber.length() != 15)) { return false; } // 校验18位身份证 if (idNumber.length() == 18) { String[] idInfo = idNumber.substring(0, 17).split(""); String birth = idInfo[6] + idInfo[7] + '-' + idInfo[8] + idInfo[9] + '-' + idInfo[10] + idInfo[11]; try { if (!idInfo[12].equals("19") && !idInfo[12].equals("20")) { return false; } java.time.LocalDate.parse(birth, java.time.format.DateTimeFormatter.ISO_DATE); } catch (Exception e) { return false; } int sum = 0; int[] weights = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2}; char[] checkCode = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'}; for (int i = 0; i < 17; i++) { sum += Integer.parseInt(idInfo[i]) * weights[i]; } return idInfo[17].equals(String.valueOf(checkCode[sum % 11])); } return true; } //验证手机号是否合法 private boolean userMobileIsValid(String mobile) { // 中国手机号码长度为11位,且符合以下格式:13x, 14x, 15x, 17x, 18x String mobile_Regex = "^(13[0-9]|14[57]|15[0-35-9]|17[0-9]|18[0-9])\\d{8}$"; return mobile.matches(mobile_Regex); } private boolean userEmailIsValid(String email){ String email_Regex = "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"; Pattern pattern = Pattern.compile(email_Regex); Matcher matcher = pattern.matcher(email); return matcher.matches(); } @Override public List importJobUser(List dataList, String userID) { if (dataList.size() <= 0) throw new BaseException("", "请添加导入数据!"); //性别 List dicJobUserGenderList = dictionaryService.getDictionaryItemList("Gender"); //重点人员类别 List dicKeyPersonTypeList = dictionaryService.getDictionaryItemList("KeyPersonType"); //就业状态 List dicJobStatusList = dictionaryService.getDictionaryItemList("JobStatus"); //所属驿站 PcSite curLoginUserSiteInfo = null; PcSiteUserExample siteUserExp = new PcSiteUserExample(); siteUserExp.or().andUserIDEqualTo(userID); PcSiteUser curLoginSiteUser = pcSiteUserMapper.selectByExample(siteUserExp).stream().findFirst().orElse(null); if(curLoginSiteUser==null){ throw new BaseException("", "未能查询到当前登录人的驿站信息!"); }else{ PcSiteExample siteExp = new PcSiteExample(); siteExp.or().andSiteIDEqualTo(curLoginSiteUser.getSiteID()); curLoginUserSiteInfo = pcSiteMapper.selectByExample(siteExp).stream().findFirst().orElse(null); } //是否全日制 List dicIsFullTimeList = dictionaryService.getDictionaryItemList("IsFullTime"); //职业资格类别 List secondLevelOcCategoryList = new ArrayList<>(); PcOccupationalExample occupationalExp = new PcOccupationalExample(); occupationalExp.or().andParentOccupationalIDEqualTo("").andStatusEqualTo(1); var firstLevelData = pcOccupationalMapper.selectByExample(occupationalExp); for (PcOccupational curOccupational : firstLevelData) { occupationalExp = new PcOccupationalExample(); occupationalExp.or().andParentOccupationalIDEqualTo(curOccupational.getOccupationalID()).andStatusEqualTo(1); var secondLevelData = pcOccupationalMapper.selectByExample(occupationalExp); for (PcOccupational curChildOccupational : secondLevelData) { SysDictionaryItem item = new SysDictionaryItem(); item.setCode(curChildOccupational.getOccupationalID()); item.setName(curChildOccupational.getOccupationalName()); secondLevelOcCategoryList.add(item); } } //职业资格等级 List dicOcclLevelList = dictionaryService.getDictionaryItemList("OccupationalLevel"); //民族 List dicNationTypeList = dictionaryService.getDictionaryItemList("NationType"); //政治面貌 List dicPoliticsTypeList = dictionaryService.getDictionaryItemList("PoliticsStatus"); //户口性质 List dicFamilyNatureList = dictionaryService.getDictionaryItemList("FamilyNature"); //最高学历 List dicHighestDegreeList = dictionaryService.getDictionaryItemList("HighestDegree"); //健康状况 List dicHealthTypeList = dictionaryService.getDictionaryItemList("Health"); //婚姻状况 List dicMaritalStatusList = dictionaryService.getDictionaryItemList("MaritalStatus"); //市/县 List regionDataList = new ArrayList<>(); AreaCodeExample regionExp= new AreaCodeExample(); regionExp.or().andFidEqualTo("441300000000000").andLvEqualTo("3"); var thirdLevelRegionList = areaCodeMapper.selectByExample(regionExp); for (AreaCode curRegionData : thirdLevelRegionList) { SysDictionaryItem item = new SysDictionaryItem(); item.setCode(curRegionData.getCode()); item.setName(curRegionData.getName()); regionDataList.add(item); } //镇街 List streetDataList = new ArrayList<>(); AreaCodeExample streetExp= new AreaCodeExample(); streetExp.or().andLvEqualTo("4"); var forthLevelStreetList = areaCodeMapper.selectByExample(streetExp); for (AreaCode curStreetData : forthLevelStreetList) { SysDictionaryItem item = new SysDictionaryItem(); item.setCode(curStreetData.getCode()); item.setName(curStreetData.getName()); streetDataList.add(item); } List resultList = new ArrayList<>(); PcSite finalCurLoginUserSiteInfo = curLoginUserSiteInfo; dataList.forEach(item -> { String errorInfo = ""; item.setJobUserID(UUID.randomUUID().toString()); var repeatResult = ifHadRepeatData(item); switch (repeatResult){ default: case 0: break; case 1: errorInfo += "身份证号码已存在!"; case 2: errorInfo += "联系电话已存在!"; case 3: errorInfo += "身份证号码、联系电话重复!"; case 4: errorInfo += "社保卡已绑定其他人员!"; case 5: errorInfo += "身份证号码、社保卡号重复!"; case 6: errorInfo += "联系电话、社保卡号重复!"; case 7: errorInfo += "身份证号码、联系电话、社保卡号重复!"; } if (stringUtils.IsNullOrEmpty(item.getName())){ errorInfo += "请填写姓名!"; } if (stringUtils.IsNullOrEmpty(item.getIdentityNumber())) errorInfo += "请填写身份证号码!"; else{ if(identityNumberIsValid(item.getIdentityNumber())) { var birthDay = dateUtils.StrToDate(item.getIdentityNumber().substring(6,14)); var sexStr = Integer.parseInt(item.getIdentityNumber().substring(16,17)); if(!stringUtils.IsNullOrEmpty(item.getBirthDayStr())){ if(birthDay!=dateUtils.StrToDate(item.getBirthDayStr())){ errorInfo += "出生日期与身份证号不匹配!"; } }else{ item.setBirthDay(birthDay); } if(!stringUtils.IsNullOrEmpty(item.getSexName())){ if((sexStr%2==0&&item.getSexName()=="男")||(sexStr%2!=0&&item.getSexName()=="女")){ errorInfo += "性别与身份证号不匹配!"; } } }else{ errorInfo += "身份证号码不合法!"; } } if (stringUtils.IsNullOrEmpty(item.getSexName())) errorInfo += "请选择性别!"; else { item.setSex(dicJobUserGenderList.stream().filter(it -> it.getName().equals(item.getSexName().trim())) .findFirst().orElse(new SysDictionaryItem()).getValue()); if (item.getSex() == null || item.getSex() == 0) errorInfo += "性别不存在!"; } if (stringUtils.IsNullOrEmpty(item.getKeyPersonTypeName())) errorInfo += "请选择重点人员类别!"; else { item.setKeyPersonTypeID(dicKeyPersonTypeList.stream().filter(it -> it.getName().equals(item.getKeyPersonTypeName().trim())) .findFirst().orElse(new SysDictionaryItem()).getValue()); if (item.getKeyPersonTypeID() == null || item.getKeyPersonTypeID() == 0) errorInfo += "重点人员类别不存在!"; } if (stringUtils.IsNullOrEmpty(item.getJobStatusName())) errorInfo += "请选择就业状态!"; else { item.setJobStatusID(dicJobStatusList.stream().filter(it -> it.getName().equals(item.getJobStatusName().trim())) .findFirst().orElse(new SysDictionaryItem()).getValue()); if (item.getJobStatusID() == null || item.getJobStatusID() == 0) errorInfo += "就业状态不存在!"; } if (stringUtils.IsNullOrEmpty(item.getSiteName())) errorInfo += "请填写所属驿站!"; else { if (finalCurLoginUserSiteInfo!=null){ if(item.getSiteName()!= finalCurLoginUserSiteInfo.getSiteName()){ errorInfo += "请填写您所在的驿站名称!"; }else{ item.setSiteID(finalCurLoginUserSiteInfo.getSiteID()); } } } if (stringUtils.IsNullOrEmpty(item.getAddress())) errorInfo += "请填写地址!"; if (stringUtils.IsNullOrEmpty(item.getUserMobile())) errorInfo += "请填写联系电话!"; else{ if(!userMobileIsValid(item.getUserMobile())){ errorInfo += "联系电话不合法!"; } } if (!stringUtils.IsNullOrEmpty(item.getIsFullTimeName())){ item.setIsFullTime(dicIsFullTimeList.stream().filter(it -> it.getName().equals(item.getIsFullTimeName().trim())) .findFirst().orElse(new SysDictionaryItem()).getValue()); if (item.getIsFullTime() == null || item.getIsFullTime() == 0) errorInfo += "是否全日制不存在!"; } if (!stringUtils.IsNullOrEmpty(item.getOccupationalCategoryName())){ item.setOccupationalCategory(secondLevelOcCategoryList.stream().filter(it -> it.getName().equals(item.getOccupationalCategoryName().trim())) .findFirst().orElse(new SysDictionaryItem()).getCode()); if (item.getOccupationalCategory() == null) errorInfo += "职业资格类别不存在!"; } if (!stringUtils.IsNullOrEmpty(item.getOccupationalLevelName())) { item.setOccupationalLevel(dicOcclLevelList.stream().filter(it -> it.getName().equals(item.getOccupationalLevelName().trim())) .findFirst().orElse(new SysDictionaryItem()).getValue()); if (item.getOccupationalLevel() == null || item.getOccupationalLevel() == 0) errorInfo += "职业资格等级不存在!"; } if (!stringUtils.IsNullOrEmpty(item.getNationName())) { item.setNation(dicNationTypeList.stream().filter(it -> it.getName().equals(item.getNationName().trim())) .findFirst().orElse(new SysDictionaryItem()).getValue()); if (item.getNation() == null || item.getNation() == 0) errorInfo += "民族不存在!"; } if (!stringUtils.IsNullOrEmpty(item.getPoliticsStatusName())) { item.setPoliticsStatusID(dicPoliticsTypeList.stream().filter(it -> it.getName().equals(item.getPoliticsStatusName().trim())) .findFirst().orElse(new SysDictionaryItem()).getValue()); if (item.getPoliticsStatusID() == null || item.getPoliticsStatusID() == 0) errorInfo += "政治面貌不存在!"; } if (!stringUtils.IsNullOrEmpty(item.getFamilyNatureName())) { item.setFamilyNatureID(dicFamilyNatureList.stream().filter(it -> it.getName().equals(item.getFamilyNatureName().trim())) .findFirst().orElse(new SysDictionaryItem()).getValue()); if (item.getFamilyNatureID() == null || item.getFamilyNatureID() == 0) errorInfo += "户口性质不存在!"; } if (!stringUtils.IsNullOrEmpty(item.getCultureRankName())) { item.setCultureRank(dicHighestDegreeList.stream().filter(it -> it.getName().equals(item.getCultureRankName().trim())) .findFirst().orElse(new SysDictionaryItem()).getValue()); if (item.getCultureRank() == null || item.getCultureRank() == 0) errorInfo += "最高学历不存在!"; } if (!stringUtils.IsNullOrEmpty(item.getHealthName())) { item.setHealthID(dicHealthTypeList.stream().filter(it -> it.getName().equals(item.getHealthName().trim())) .findFirst().orElse(new SysDictionaryItem()).getValue()); if (item.getHealthID() == null || item.getHealthID() == 0) errorInfo += "健康状况不存在!"; } if (!stringUtils.IsNullOrEmpty(item.getMaritalStatusName())) { item.setMaritalStatusID(dicMaritalStatusList.stream().filter(it -> it.getName().equals(item.getMaritalStatusName().trim())) .findFirst().orElse(new SysDictionaryItem()).getValue()); if (item.getMaritalStatusID() == null || item.getMaritalStatusID() == 0) errorInfo += "婚姻状况不存在!"; } if (!stringUtils.IsNullOrEmpty(item.getEmail())) { if (!userEmailIsValid(item.getEmail())) errorInfo += "电子邮箱不合法!"; } if (!stringUtils.IsNullOrEmpty(item.getProvinceName())) { if((item.getProvinceName().trim()).equals("广东省")){ item.setProvinceCode("440000000000000"); }else{ errorInfo += "省份不存在!"; } } if (!stringUtils.IsNullOrEmpty(item.getRegionName())) { item.setRegionCode(regionDataList.stream().filter(it -> it.getName().equals(item.getRegionName().trim())) .findFirst().orElse(new SysDictionaryItem()).getCode()); if (item.getRegionCode() == null) errorInfo += "市/县不存在!"; } if (!stringUtils.IsNullOrEmpty(item.getStreetName())) { item.setStreetCode(streetDataList.stream().filter(it -> it.getName().equals(item.getStreetName().trim())) .findFirst().orElse(new SysDictionaryItem()).getCode()); if (item.getStreetCode() == null) errorInfo += "镇街不存在!"; else{ if (stringUtils.IsNullOrEmpty(item.getRegionName())){ errorInfo += "请选择相关市/县!"; }else{ AreaCodeExample curStreetExp = new AreaCodeExample(); streetExp.or().andCodeEqualTo(item.getStreetCode()); var curStreetReginCode = areaCodeMapper.selectByExample(curStreetExp).get(0).getFid(); if(item.getRegionCode()!= null&&curStreetReginCode!=item.getRegionCode()){ errorInfo += "镇街不属于当前市/县!"; } } } } if (stringUtils.IsNullOrEmpty(errorInfo)) { resultList.add(item); } else { item.setErrorMessage(errorInfo); } }); if (dataList.stream().filter(it -> !stringUtils.IsNullOrEmpty(it.errorMessage)).collect(Collectors.toList()).size() > 0) return dataList; resultList.forEach(item -> { save(item, userID); }); return null; } }