123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933 |
- 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.AllCompanyVo;
- 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<CompanyVo> getList(Integer pageIndex, Integer pageSize,
- List<String> 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<CompanyVo> dataList = companyCQuery.getList(stringUtils.ListToInSql(companyIDList), companyName, companyCode,
- recordStatus, regionCode, streetCode,
- createUserId, workTime, curLoginUserSiteID,
- siteID, startDate, endDate, postCountSorter,
- companyTypeID, industryID,false,
- createUserName);
- PageInfo<CompanyVo> result = new PageInfo(dataList);
- return result;
- }
- @Override
- public List<AllCompanyVo> getAllList() {
- return companyCQuery.getAllList();
- }
- @Override
- public PageInfo<PcFirm> getFirmNameLikeList(Integer pageIndex, Integer pageSize, String firmName) {
- // PageHelper.startPage(pageIndex, pageSize);
- List<PcFirm> dataList = companyCQuery.getFirmNameLikeList(firmName);
- PageInfo<PcFirm> result = new PageInfo(dataList);
- return result;
- }
- @Override
- public List<PcCompany> 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);
- }
- if (dbData == null && !stringUtils.IsNullOrEmpty(data.getOracleTableID())) {
- exp = new PcCompanyExample();
- exp.createCriteria().andOracleTableIDEqualTo(data.getOracleTableID());
- exp.or().andCompanyCodeEqualTo(data.getCompanyCode());
- List<PcCompanyWithBLOBs> company = pcCompanyMapper.selectByExampleWithBLOBs(exp);
- if (!company.isEmpty()) {
- // 不重复录入oracle同步数据
- return 0;
- }
- }
- 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(data.getCreateTime() == null ? new Date() : data.getCreateTime()); // 三目运算防止oracle同步数据的创建日期被重置
- 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.setOracleTableID(data.getOracleTableID());
- //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.setOracleTableID(data.getOracleTableID());
- // 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<String> 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<PcSignin> 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 PcCompany getCompanyByOracleTableID(String oracleTableID) {
- PcCompanyExample example = new PcCompanyExample();
- PcCompanyExample.Criteria criteria = example.createCriteria();
- criteria.andOracleTableIDEqualTo(oracleTableID);
- return pcCompanyMapper.selectByExample(example).stream().findFirst().orElse(null);
- }
- @Override
- public List<CompanyVo> importCompany(List<CompanyVo> 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<SysDictionaryItem> 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<SysDictionaryItem> 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<SysDictionaryItem> dicCompanyModelList = dictionaryService.getDictionaryItemList("CompanyModel");
- // 经济类型
- List<SysDictionaryItem> dicCompanyTypeList = dictionaryService.getDictionaryItemList("CompanyType");
- // 企业状态
- List<SysDictionaryItem> companyStatusList = dictionaryService.getDictionaryItemList("CompanyStatus");
- // 企业行业
- List<PcIndustry> industryList = industryService.getAllList();
- // 企业产业分类
- List<SysDictionaryItem> companyEstateCategory = dictionaryService.getDictionaryItemByCodeList("CompanyEstateCategory");
- // 企业注册资本类型
- List<SysDictionaryItem> registeredCapitalTypeList = dictionaryService.getDictionaryItemList("RegisteredCapitalType");
- List<CompanyVo> resultList = new ArrayList<>();
- PcSite finalCurLoginUserSiteInfo = curLoginUserSiteInfo;
- List<String> allCodeList = new ArrayList<>();
- List<String> allNameList = new ArrayList<>();
- List<String> repeatCodeList = new ArrayList<>();
- List<String> repeatNameList = new ArrayList<>();
- dataList.forEach(item->{
- var curCompanyCode = item.getCompanyCode();
- var curCompanyName = item.getCompanyName();
- if(!allCodeList.contains(curCompanyCode)){
- allCodeList.add(curCompanyCode);
- }else{
- if(!repeatCodeList.contains(curCompanyCode)){
- repeatCodeList.add(curCompanyCode);
- }
- }
- if(!allNameList.contains(curCompanyName)){
- allNameList.add(curCompanyName);
- }else{
- if(!repeatNameList.contains(curCompanyName)){
- repeatNameList.add(curCompanyName);
- }
- }
- });
- 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(repeatCodeList.stream().count()>0){
- if(repeatCodeList.contains(item.getCompanyCode())){
- errorInfo = "导入数据存在相同的信用代码!";
- if(repeatNameList.stream().count()>0){
- if(repeatNameList.contains(item.getCompanyName())){
- errorInfo += "导入数据存在相同的企业名称!";
- }
- }
- }
- }
- if(repeatNameList.stream().count()>0){
- if(repeatNameList.contains(item.getCompanyName())){
- errorInfo = "导入数据存在相同的企业名称!";
- if(repeatCodeList.stream().count()>0){
- if(repeatCodeList.contains(item.getCompanyCode())){
- 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<PcSite> getSiteList() {
- //所属驿站
- List<PcSite> 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<PcIndustry> 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<AreaCode> 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<CompanyPostMapVo> 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<CompanyPostMapVo> dataMapList = companyCQuery.getDataMapList(companyName, maxDistance, companyModel, recordStatus, regionCode, siteID, latitude, longitude, createTime, isPost);
- PageInfo<CompanyPostMapVo> result = new PageInfo<>(dataMapList);
- // 获取所有的企业ID
- List<String> companyIDs = result.getList().stream()
- .filter(Objects::nonNull)
- .map(CompanyPostMapVo::getCompanyID)
- .filter(Objects::nonNull)
- .collect(Collectors.toList());
- if (!companyIDs.isEmpty()) {
- // 查询岗位并映射到企业
- List<PostVo> postList = postCQuery.selectPostInCompanyIDs(stringUtils.ListToInSql(companyIDs));
- Map<String, List<PostVo>> 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<LabelVo> companyLabelList = labelCQuery.getCompanyLabelListInCompanyIDs(stringUtils.ListToInSql(companyIDs));
- Map<String, List<LabelVo>> 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<CompanyPostMapVo> 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<CompanyPostMapVo> dataMapList = companyCQuery.getDataMapListByPostName(postName, maxDistance, companyModel, recordStatus, regionCode, siteID, latitude, longitude, createTime);
- PageInfo<CompanyPostMapVo> 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<SigninVo> getCompanySigninList(String companyID) {
- return companyCQuery.getCompanySigninList(companyID);
- }
- }
|