package com.hz.employmentsite.services.impl.companyService; 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.CompanyCQuery; import com.hz.employmentsite.mapper.cquery.LabelCQuery; import com.hz.employmentsite.mapper.cquery.PostCQuery; import com.hz.employmentsite.model.*; import com.hz.employmentsite.services.service.AccountService; import com.hz.employmentsite.services.service.companyService.CompanyService; import com.hz.employmentsite.services.service.companyService.FirmService; import com.hz.employmentsite.services.service.companyService.IndustryService; import com.hz.employmentsite.services.service.system.DictionaryService; import com.hz.employmentsite.util.RegexUtils; import com.hz.employmentsite.util.StringUtils; import com.hz.employmentsite.util.ip.IpUtils; import com.hz.employmentsite.vo.baseSettings.LabelVo; import com.hz.employmentsite.vo.companyService.AppCompanyPostVo; import com.hz.employmentsite.vo.companyService.CompanyVo; import com.hz.employmentsite.vo.companyService.PostVo; import com.hz.employmentsite.vo.dataMap.CompanyPostMapVo; import com.hz.employmentsite.vo.signin.SigninVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; @Service("CompanyService") public class CompanyServiceImpl implements CompanyService { @Autowired private CompanyCQuery companyCQuery; @Autowired private StringUtils stringUtils; @Autowired private RegexUtils regexUtils; @Autowired private DictionaryService dictionaryService; @Autowired private PcCompanyMapper pcCompanyMapper; @Autowired private AreaCodeMapper areaCodeMapper; @Autowired private PcSiteMapper siteMapper; @Autowired private PcPostMapper pcPostMapper; @Autowired private PcSigninMapper pcSigninMapper; @Autowired private PcSiteUserMapper pcSiteUserMapper; @Autowired private PcSiteMapper pcSiteMapper; @Autowired private FirmService firmService; @Autowired private IndustryService industryService; @Autowired private PcLabelCompanyMapper pcLabelCompanyMapper; @Autowired private LabelCQuery labelCQuery; @Autowired private PostCQuery postCQuery; @Autowired private AccountService accountService; @Autowired private SysLogMapper sysLogMapper; @Autowired private PcCreditRecordMapper pcCreditRecordMapper; @Override public PageInfo getList(Integer pageIndex, Integer pageSize, List companyIDList, String companyName, String companyCode, String recordStatus, String regionCode, String streetCode, String createUserId, String workTime, String loginUserID, String siteID, Date startDate, Date endDate, String postCountSorter, String companyTypeID,String industryID, String createUserName) { 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 dataList = companyCQuery.getList(stringUtils.ListToInSql(companyIDList), companyName, companyCode, recordStatus, regionCode, streetCode, createUserId, workTime, curLoginUserSiteID, siteID, startDate, endDate, postCountSorter, companyTypeID, industryID,false, createUserName); PageInfo result = new PageInfo(dataList); return result; } @Override public PageInfo getFirmNameLikeList(Integer pageIndex, Integer pageSize, String firmName) { // PageHelper.startPage(pageIndex, pageSize); List dataList = companyCQuery.getFirmNameLikeList(firmName); PageInfo result = new PageInfo(dataList); return result; } @Override public List getCompanyBySiteIDList(String siteID) { PcCompanyExample exp = new PcCompanyExample(); exp.or().andSiteIDEqualTo(siteID); return pcCompanyMapper.selectByExample(exp); } private String ifHadRepeatData(CompanyVo data, boolean isEdit,String curUserID){ var result = 0; PcCompanyExample companyExp1 = new PcCompanyExample(); companyExp1.or().andCompanyNameEqualTo(data.getCompanyName()).andCompanyIDNotEqualTo(data.getCompanyID()); var ifRepeatName = pcCompanyMapper.selectByExample(companyExp1).size()>0; PcCompanyExample companyExp2 = new PcCompanyExample(); companyExp2.or().andCompanyCodeEqualTo(data.getCompanyCode()).andCompanyIDNotEqualTo(data.getCompanyID()); var ifRepeatCode = pcCompanyMapper.selectByExample(companyExp2).size()>0; result += ifRepeatName? 1:0; result += ifRepeatCode? 2:0; if(result > 0 ) { PcCompanyExample companyExp = new PcCompanyExample(); switch (result){ case 1: companyExp = companyExp1; break; case 2: companyExp = companyExp2; break; case 3: companyExp.or().andCompanyNameEqualTo(data.getCompanyName()).andCompanyIDNotEqualTo(data.getCompanyID()); companyExp.or().andCompanyCodeEqualTo(data.getCompanyCode()).andCompanyIDNotEqualTo(data.getCompanyID()); break; } var repeatData = pcCompanyMapper.selectByExample(companyExp).stream().findFirst().orElse(null); if( repeatData != null){ PcSiteUserExample siteUserExp = new PcSiteUserExample(); siteUserExp.or().andUserIDEqualTo(repeatData.getCreateUserID()); var createSiteUserInfo= pcSiteUserMapper.selectByExample(siteUserExp).stream().findFirst().orElse(null); if( createSiteUserInfo!=null){ PcSiteExample siteExp = new PcSiteExample(); siteExp.or().andSiteIDEqualTo(createSiteUserInfo.getSiteID()); var curSiteInfo= pcSiteMapper.selectByExample(siteExp).stream().findFirst().orElse(null); if( curSiteInfo != null){ if(isEdit){ if( curSiteInfo.getSiteID().equals("66fc1176-b8a1-4b9a-b2fc-9f590ceed342")||curSiteInfo.getSiteID().equals("0c037144-99c6-4e90-bf25-2c9cea8c7b7a")){ repeatData.setSiteID(data.getSiteID()); repeatData.setModifyTime(new Date()); repeatData.setModifyUserID(curUserID); pcCompanyMapper.updateByPrimaryKey(repeatData); return "-1"; }else{ throw new BaseException("1004","该企业已被"+curSiteInfo.getSiteName()+",工号"+createSiteUserInfo.getUserNo()+"录入!"); } } return "该企业已被"+ curSiteInfo.getSiteName()+",工号"+createSiteUserInfo.getUserNo()+"录入!"; } } } } return String.valueOf(result); } @Override public Integer save(CompanyVo data, String userId) { Integer result = baseSave(data, userId); PcCreditRecordExample creEmp = new PcCreditRecordExample(); creEmp.or().andCompanyIDEqualTo(data.getCompanyID()); pcCreditRecordMapper.deleteByExample(creEmp); if (data.creditRecordList != null && !data.creditRecordList.isEmpty()) { data.creditRecordList.forEach(creditRecord -> { creditRecord.setCreditRecordID(UUID.randomUUID().toString()); creditRecord.setCompanyID(data.getCompanyID()); pcCreditRecordMapper.insert(creditRecord); }); } return result; } @Override public Integer baseSave(CompanyVo data, String userId) { Integer result = 0; Boolean isExist = data.getCompanyID() != null; PcCompanyWithBLOBs dbData = null; PcCompanyExample exp = new PcCompanyExample(); PcCompanyExample.Criteria cro = exp.createCriteria(); if (isExist) { cro.andCompanyIDEqualTo(data.getCompanyID()); dbData = pcCompanyMapper.selectByExampleWithBLOBs(exp).stream().findFirst().orElse(null); } var resultNum = Integer.valueOf(ifHadRepeatData(data,true,userId)); if( resultNum>0) { throw new BaseException("1004","该企业已被录入!"); } if (dbData == null) { //这里已直接将公司转至当前驿站下 if(resultNum.equals(-1)){ result = 1; } else{ dbData = new PcCompanyWithBLOBs(); dbData.setCompanyID(data.getCompanyID()); dbData.setCompanyName(data.getCompanyName()); dbData.setIsShortage(data.getIsShortage()); dbData.setCompanyCode(data.getCompanyCode()); dbData.setSiteID(data.getSiteID()); dbData.setRegionCode(data.getRegionCode()); dbData.setStreetCode(data.getStreetCode()); dbData.setCompanyAddress(data.getCompanyAddress()); dbData.setWorkSituation(data.getWorkSituation()); dbData.setCompanyModel(data.getCompanyModel()); dbData.setCompanyType(data.getCompanyType()); dbData.setUserName(data.getUserName()); dbData.setUserMobile(data.getUserMobile()); dbData.setCompanyEmail(data.getCompanyEmail()); dbData.setFrName(data.getFrName()); dbData.setValidDate(data.getValidDate()); dbData.setRecordStatus(data.getRecordStatus()); dbData.setBusinScope(data.getBusinScope()); dbData.setCompanyDesc(data.getCompanyDesc()); dbData.setInsuredCount(data.getInsuredCount()); dbData.setLongitude(data.getLongitude()); dbData.setLatitude(data.getLatitude()); dbData.setOpenId(data.getOpenId()); dbData.setCreateTime(new Date()); dbData.setCreateUserID(userId); dbData.setModifyTime(new Date()); dbData.setModifyUserID(userId); dbData.setEstablishmentTime(data.getEstablishmentTime()); dbData.setRegisteredCapital(data.getRegisteredCapital()); dbData.setRegisteredCapitalType(data.getRegisteredCapitalType()); dbData.setSignInPoliticalArea(data.getSignInPoliticalArea()); dbData.setWebsite(data.getWebsite()); dbData.setBonus(data.getBonus()); dbData.setIndustryID(data.getIndustryID()); dbData.setEstateCategoryID(data.getEstateCategoryID()); //dbData.setTagID(data.getTagID()); result = pcCompanyMapper.insert(dbData); } } else { dbData.setCompanyName(data.getCompanyName()); dbData.setCompanyCode(data.getCompanyCode()); dbData.setIsShortage(data.getIsShortage()); dbData.setSiteID(data.getSiteID()); dbData.setRegionCode(data.getRegionCode()); dbData.setStreetCode(data.getStreetCode()); dbData.setCompanyAddress(data.getCompanyAddress()); dbData.setWorkSituation(data.getWorkSituation()); dbData.setCompanyModel(data.getCompanyModel()); dbData.setCompanyType(data.getCompanyType()); dbData.setUserName(data.getUserName()); dbData.setUserMobile(data.getUserMobile()); dbData.setCompanyEmail(data.getCompanyEmail()); dbData.setFrName(data.getFrName()); dbData.setValidDate(data.getValidDate()); dbData.setRecordStatus(data.getRecordStatus()); dbData.setBusinScope(data.getBusinScope()); dbData.setCompanyDesc(data.getCompanyDesc()); dbData.setInsuredCount(data.getInsuredCount()); dbData.setLongitude(data.getLongitude()); dbData.setLatitude(data.getLatitude()); dbData.setOpenId(data.getOpenId()); dbData.setModifyTime(new Date()); dbData.setModifyUserID(userId); dbData.setEstablishmentTime(data.getEstablishmentTime()); dbData.setRegisteredCapital(data.getRegisteredCapital()); dbData.setRegisteredCapitalType(data.getRegisteredCapitalType()); dbData.setSignInPoliticalArea(data.getSignInPoliticalArea()); dbData.setWebsite(data.getWebsite()); dbData.setBonus(data.getBonus()); dbData.setIndustryID(data.getIndustryID()); dbData.setEstateCategoryID(data.getEstateCategoryID()); // dbData.setTagID(data.getTagID()); result = pcCompanyMapper.updateByPrimaryKeyWithBLOBs(dbData); } PcLabelCompanyExample labelEmp = new PcLabelCompanyExample(); labelEmp.or().andCompanyIDEqualTo(data.getCompanyID()); pcLabelCompanyMapper.deleteByExample(labelEmp); if(data.listLabel!=null && data.listLabel.size()>0){ data.listLabel.forEach(x->{ PcLabelCompany labelModel = new PcLabelCompany(); labelModel.setCompanyID(data.getCompanyID()); labelModel.setLabelID(x.getLabelID()); pcLabelCompanyMapper.insert(labelModel); }); } return result; } @Override public Integer delete(HttpServletRequest request, List ids) { int result = 0; String delInfo = "删除企业:"; for(String curCompanyID : ids){ PcPostExample pcPostExp = new PcPostExample(); pcPostExp.or().andCompanyIDEqualTo(curCompanyID); var curCompanyPostList = pcPostMapper.selectByExample(pcPostExp).stream().toList(); if( curCompanyPostList != null && curCompanyPostList.size() > 0){ throw new BaseException("10004","所选企业已有关联岗位信息,不允许删除!"); } PcSigninExample pcSigninExample = new PcSigninExample(); pcSigninExample.or().andCompanyIDEqualTo(curCompanyID); List pcSignins = pcSigninMapper.selectByExample(pcSigninExample).stream().toList(); if (pcSignins != null && pcSignins.size() > 0) { throw new BaseException("10004","所选企业已有关联的外出工作走访记录信息,暂时无法删除!"); } PcCompanyWithBLOBs company = pcCompanyMapper.selectByPrimaryKey(curCompanyID); int count = pcCompanyMapper.deleteByPrimaryKey(curCompanyID); if(count>0){ PcLabelCompanyExample labelEmp = new PcLabelCompanyExample(); labelEmp.or().andCompanyIDEqualTo(curCompanyID); pcLabelCompanyMapper.deleteByExample(labelEmp); // 记录被删除的企业信息 delInfo += company.getCompanyName() + ","; } result+=count; } if (result > 0) { SysLog sysLog = new SysLog(); sysLog.setLogID(UUID.randomUUID().toString()); sysLog.setPageName("企业信息管理"); sysLog.setPageUrl("/companyService/enterprise/delete"); sysLog.setActionName("删除企业"); sysLog.setUserID(accountService.getLoginUserID()); sysLog.setLogTime(new Date()); sysLog.setIPAddress(IpUtils.getIpAddr(request)); sysLog.setOperationData(delInfo.substring(0, delInfo.length() - 1)); // 注意移除最后一个, sysLogMapper.insert(sysLog); } return result; } @Override public CompanyVo getDataById(String id,boolean isAllCompany) { if (stringUtils.IsNullOrEmpty(id)) { return null; } CompanyVo data = companyCQuery.getList(stringUtils.ListToInSql(Arrays.asList(id)), null, null, null, null, null, null, null, null, null, null, null, null,null,null, isAllCompany, null).stream().findFirst().orElse(null); if(data!=null){ data.listLabel = labelCQuery.getCompanyLabelList(id); } return data; } @Override public List importCompany(List dataList, String userID) { if (dataList.size() <= 0) throw new BaseException("1004", "请添加导入数据!"); //所属驿站 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 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 dicCompanyModelList = dictionaryService.getDictionaryItemList("CompanyModel"); // 经济类型 List dicCompanyTypeList = dictionaryService.getDictionaryItemList("CompanyType"); // 企业状态 List companyStatusList = dictionaryService.getDictionaryItemList("CompanyStatus"); // 企业行业 List industryList = industryService.getAllList(); // 企业产业分类 List companyEstateCategory = dictionaryService.getDictionaryItemByCodeList("CompanyEstateCategory"); // 企业注册资本类型 List registeredCapitalTypeList = dictionaryService.getDictionaryItemList("RegisteredCapitalType"); List resultList = new ArrayList<>(); PcSite finalCurLoginUserSiteInfo = curLoginUserSiteInfo; HashMap nameCodeList = new HashMap<>(); dataList.forEach(item->{ if(!nameCodeList.containsValue(item.getCompanyCode())){ nameCodeList.put("CompanyCode",item.getCompanyCode()); }else{ throw new BaseException("","企业信息导入数据存在相同的信用代码!"); } if(!nameCodeList.containsValue(item.getCompanyName())){ nameCodeList.put("CompanyName",item.getCompanyName()); }else{ throw new BaseException("","企业信息导入数据存在相同的企业名称!"); } }); dataList.forEach(item -> { String errorInfo = ""; item.companyID = UUID.randomUUID().toString(); if (stringUtils.IsNullOrEmpty(item.companyName)){ errorInfo += "请填写企业名称!"; }else{ if (stringUtils.IsNullOrEmpty(item.companyCode)) errorInfo += "请填写统一信用代码!"; else{ if(!regexUtils.theCodeIsValid(item.companyCode)){ errorInfo +="输入的统一信用代码无效"; }else{ var result = ifHadRepeatData(item,false,userID); errorInfo += !result.equals("0")? result:""; } } } if (stringUtils.IsNullOrEmpty(item.getSiteName())) errorInfo += "请填写所属驿站!"; else { if (finalCurLoginUserSiteInfo!=null){ if(!item.getSiteName().equals(finalCurLoginUserSiteInfo.getSiteName())){ errorInfo += "请填写您所在的驿站名称!"; }else{ item.setSiteID(finalCurLoginUserSiteInfo.getSiteID()); } } } if (stringUtils.IsNullOrEmpty(item.companyAddress)) errorInfo += "请填写企业办公地址!"; if (stringUtils.IsNullOrEmpty(item.userName)) errorInfo += "请填写企业联系人!"; if (stringUtils.IsNullOrEmpty(item.userMobile)) errorInfo += "请填写企业联系电话!"; else{ if(!regexUtils.theMobileIsValid(item.userMobile,true)){ errorInfo += "企业联系电话不合法!"; } } if (stringUtils.IsNullOrEmpty(item.recordStatusName)) errorInfo += "请选择企业状态!"; else { item.recordStatus = companyStatusList.stream().filter(it -> it.getName().equals(item.getRecordStatusName().trim())) .findFirst().orElse(new SysDictionaryItem()).getValue(); if (item.recordStatus == null) errorInfo += "企业状态不存在!"; } if (stringUtils.IsNullOrEmpty(item.getWorkSituation())) { errorInfo += "请填写用工情况!"; } else { // 判断item.getWebsite()是否为正整数类型 if (item.getWorkSituation().matches("^[1-9]\\d*$")) { // 如果是正整数,则转换 int workSituation = Integer.parseInt(item.getWorkSituation()); // 未选择企业规模时按用工情况转换 if (stringUtils.IsNullOrEmpty(item.companyModelStr)) { int[][] workSituationRanges = { {0, 19, 1}, {20, 99, 2}, {100, 299, 3}, {300, 499, 4}, {500, 999, 5}, {1000, 9999, 6}, {10000, Integer.MAX_VALUE, 7} }; int companyModel = 1; // 默认值,如果所有范围都不匹配 for (int[] range : workSituationRanges) { if (workSituation >= range[0] && workSituation <= range[1]) { companyModel = range[2]; break; } } item.setCompanyModel(companyModel); } } else { // 不是正整数,返回errorInfo errorInfo += "用工情况必须为正整数!"; } } if (!stringUtils.IsNullOrEmpty(item.isShortageName)){ if (item.isShortageName.equals("是")) { item.isShortage = 1; } else { item.isShortage = 0; } } if (!stringUtils.IsNullOrEmpty(item.getRegisteredCapitalTypeStr())) { item.registeredCapitalType = registeredCapitalTypeList.stream().filter(it -> it.getName().equals(item.getRegisteredCapitalTypeStr().trim())) .findFirst().orElse(new SysDictionaryItem()).getValue(); if (item.registeredCapitalType == null) errorInfo += "注册资本类型不存在!"; } if (!stringUtils.IsNullOrEmpty(item.getSignInPoliticalAreaName())) { item.signInPoliticalArea = regionDataList.stream().filter(it -> it.getName().equals(item.signInPoliticalAreaName.trim())) .findFirst().orElse(new SysDictionaryItem()).getCode(); if (item.signInPoliticalArea == null) errorInfo += "注册地址行政区划不存在!"; } if (!stringUtils.IsNullOrEmpty(item.getIndustryName())) { item.industryID = industryList.stream().filter(it -> it.getIndustryName().equals(item.industryName.trim())) .findFirst().orElse(new PcIndustry()).getIndustryId(); if (item.industryID == null) errorInfo += "所属行业不存在!"; } if (!stringUtils.IsNullOrEmpty(item.getEstateCategoryName())) { item.estateCategoryID = companyEstateCategory.stream().filter(it -> it.getName().equals(item.estateCategoryName.trim())) .findFirst().orElse(new SysDictionaryItem()).getValue(); if (item.estateCategoryID == null) errorInfo += "所属产业分类不存在!"; } if (!stringUtils.IsNullOrEmpty(item.validDateStr)) { if(item.validDateStr.trim().equals("至长期")){ item.validDate = new Date(2099,12,31); } } if (!stringUtils.IsNullOrEmpty(item.companyEmail)) { if(!regexUtils.theEmailIsValid(item.companyEmail)){ errorInfo +="企业邮箱不合法!"; } } if (!stringUtils.IsNullOrEmpty(item.companyTypeStr)) { item.companyType = dicCompanyTypeList.stream().filter(it -> it.getName().equals(item.companyTypeStr.trim())) .findFirst().orElse(new SysDictionaryItem()).getValue(); if (item.companyType == null || item.companyType == 0) errorInfo += "经济类型不存在!"; } if (stringUtils.IsNullOrEmpty(item.getRegionName())) errorInfo += "请选择所属县区!"; else { item.setRegionCode(regionDataList.stream().filter(it -> it.getName().equals(item.getRegionName().trim())) .findFirst().orElse(new SysDictionaryItem()).getCode()); if (item.getRegionCode() == null) errorInfo += "所属县区不存在!"; else{ if(!item.getRegionCode().equals(finalCurLoginUserSiteInfo.getRegionCode())){ 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(); curStreetExp.or().andCodeEqualTo(item.getStreetCode()); var curStreetReginCode = areaCodeMapper.selectByExample(curStreetExp).get(0).getFid(); if(item.getRegionCode()!= null&&!curStreetReginCode.equals(item.getRegionCode())){ errorInfo += "所属街道不属于当前所属县区!"; } } } } if (!stringUtils.IsNullOrEmpty(item.companyModelStr)) { item.companyModel = dicCompanyModelList.stream().filter(it -> it.getName().equals(item.companyModelStr.trim())) .findFirst().orElse(new SysDictionaryItem()).getValue(); if (item.companyModel == null || item.companyModel == 0) 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; } @Override public List getSiteList() { //所属驿站 List siteList = siteMapper.selectByExample(null); return siteList; } @Override public Integer saveAppCompanyPost(AppCompanyPostVo data, String userId) { String pattern = "yyyy-MM-dd"; // 日期字符串的格式 SimpleDateFormat dateFormat = new SimpleDateFormat(pattern); var companyID = UUID.randomUUID().toString(); if (stringUtils.IsNullOrEmpty(data.getCompanyID())) { data.setCompanyID(companyID); } Integer rows = save(data, userId); final int[] postRows = {0}; if (rows > 0) { PcPostExample expPost = new PcPostExample(); PcPostExample.Criteria cro = expPost.or(); cro.andCompanyIDEqualTo(data.getCompanyID()); int delRows=pcPostMapper.deleteByExample(expPost); data.getPostData().stream().forEach(x -> { PcPost post = new PcPost(); post.setRecordStatus(1); post.setPostID(UUID.randomUUID().toString()); post.setCompanyID(data.getCompanyID()); post.setPostName(x.get("postName").toString()); post.setRecruitCount(Integer.parseInt(x.get("recruitCount").toString())); post.setValidDay(Integer.parseInt(x.get("validDay").toString())); try { post.setValidTime(dateFormat.parse(x.get("validTime").toString())); } catch (ParseException e) { e.printStackTrace(); } int r = pcPostMapper.insert(post); postRows[0] += r; }); return postRows[0]; } return null; } @Override public CompanyVo normalByCompanyName(String companyName) { PcFirmWithBLOBs pcFirm = firmService.selectByCompanyName(companyName); if (pcFirm == null) { return null; } CompanyVo companyVo = new CompanyVo(); // 匹配数据 companyVo.setFrName(pcFirm.getDbrName()); if (pcFirm.getRegisteredCapital() != null && !pcFirm.getRegisteredCapital().trim().isBlank()) { try { companyVo.setRegisteredCapital(BigDecimal.valueOf(Double.valueOf(pcFirm.getRegisteredCapital()))); } catch (Exception e) { } } companyVo.setCompanyCode(pcFirm.getCompanyCode()); if (pcFirm.getInsuredCount() != null && !pcFirm.getInsuredCount().trim().isBlank()) { try { companyVo.setInsuredCount(Integer.valueOf(pcFirm.getInsuredCount())); } catch (Exception e) { } } companyVo.setUserMobile(pcFirm.getLxMobile()); companyVo.setCompanyEmail(pcFirm.getEmail()); companyVo.setCompanyAddress(pcFirm.getLatestAddress()); companyVo.setBusinScope(pcFirm.getBusinessScope()); if (pcFirm.getEstablishmentDate() != null) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); try { companyVo.setEstablishmentTime(dateFormat.parse(pcFirm.getEstablishmentDate())); } catch (Exception e) { } } if (pcFirm.getIndustry() != null && !pcFirm.getIndustry().isBlank()) { // 获取行业数据 List allList = industryService.getAllList(); PcIndustry pcIndustry = allList.stream().filter(item -> item.getIndustryName().equals(pcFirm.getIndustry())).findFirst().orElse(new PcIndustry()); companyVo.setIndustryID(pcIndustry.getIndustryId()); companyVo.setIndustryName(pcIndustry.getIndustryName()); } if (pcFirm.getHomeRegion() != null && !pcFirm.getHomeRegion().isBlank()) { // 匹配注册地所属县区 AreaCodeExample example = new AreaCodeExample(); AreaCodeExample.Criteria criteria = example.createCriteria(); criteria.andNameEqualTo(pcFirm.getHomeRegion()); List areaCodes = areaCodeMapper.selectByExample(example); if (!areaCodes.isEmpty()) { companyVo.setSignInPoliticalArea(areaCodes.get(0).getCode()); } } return companyVo; } /** * 企业可视化地图查询 * * @param companyName 企业名称 * @param maxDistance 最大直线距离 * @param companyModel 企业规模 * @param recordStatus 企业状态 * @param regionCode 所属县区 * @param siteID 所属驿站 * @param createTimeBy 创建时间 * @return 企业VO列表 */ @Override public PageInfo getDataMapList(int pageIndex, int pageSize, String companyName, Integer maxDistance, Integer companyModel, Integer recordStatus, String regionCode, String siteID, Double latitude, Double longitude, String createTimeBy, Integer isPost) { PageHelper.startPage(pageIndex, pageSize); // 按要求获取到距离当前日期的时间 String createTime = getCreateTime(createTimeBy); List dataMapList = companyCQuery.getDataMapList(companyName, maxDistance, companyModel, recordStatus, regionCode, siteID, latitude, longitude, createTime, isPost); PageInfo result = new PageInfo<>(dataMapList); // 获取所有的企业ID List companyIDs = result.getList().stream() .filter(Objects::nonNull) .map(CompanyPostMapVo::getCompanyID) .filter(Objects::nonNull) .collect(Collectors.toList()); if (!companyIDs.isEmpty()) { // 查询岗位并映射到企业 List postList = postCQuery.selectPostInCompanyIDs(stringUtils.ListToInSql(companyIDs)); Map> postMap = (postList != null) ? postList.stream() .filter(Objects::nonNull) .collect(Collectors.groupingBy(PostVo::getCompanyID)) : new HashMap<>(); // 填充岗位数据 result.getList().forEach(company -> { if (company != null && company.getCompanyID() != null) { company.setPostList(postMap.getOrDefault(company.getCompanyID(), new ArrayList<>())); } }); // 查询标签并映射到企业 List companyLabelList = labelCQuery.getCompanyLabelListInCompanyIDs(stringUtils.ListToInSql(companyIDs)); Map> labelMap = (companyLabelList != null) ? companyLabelList.stream() .filter(Objects::nonNull) .collect(Collectors.groupingBy(LabelVo::getCompanyID)) : new HashMap<>(); // 填充标签数据 result.getList().forEach(company -> { if (company != null && company.getCompanyID() != null) { company.setCompanyLabelList(labelMap.getOrDefault(company.getCompanyID(), new ArrayList<>())); } }); } return result; } /** * 企业可视化地图查询企业-按岗位名称反向查询 * * @param pageIndex * @param pageSize * @param postName 企业名称 * @param maxDistance 最大直线距离 * @param companyModel 企业规模 * @param recordStatus 企业状态 * @param regionCode 所属县区 * @param siteID 所属驿站 * @param latitude 纬度 * @param longitude 经度 * @return 企业VO列表 */ @Override public PageInfo getDataMapListByPostName(int pageIndex, int pageSize, String postName, Integer maxDistance, Integer companyModel, Integer recordStatus, String regionCode, String siteID, Double latitude, Double longitude, String createTimeBy) { PageHelper.startPage(pageIndex, pageSize); // 按要求获取到距离当前日期的时间 String createTime = getCreateTime(createTimeBy); List dataMapList = companyCQuery.getDataMapListByPostName(postName, maxDistance, companyModel, recordStatus, regionCode, siteID, latitude, longitude, createTime); PageInfo result = new PageInfo(dataMapList); return result; } /** * 获取指定创建日期 */ public String getCreateTime(String by){ if (stringUtils.IsNullOrEmpty(by) || by.equals("all")){ return null; } LocalDate currentDate = LocalDate.now(); LocalDate resultDate = null; switch (by){ case "3Day": resultDate = currentDate.minusDays(3); break; case "1Week": resultDate = currentDate.minusWeeks(1); break; case "1Month": resultDate = currentDate.minusMonths(1); break; case "3Month": resultDate = currentDate.minusMonths(3); break; case "Year": resultDate = currentDate.minusYears(1); break; default: return null; } DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); return resultDate.format(formatter); } /** * 查询企业的打卡服务记录 * * @param companyID 企业ID * @return 打卡记录 */ @Override public List getCompanySigninList(String companyID) { return companyCQuery.getCompanySigninList(companyID); } }