From 0b16e22ab34d47742b7ed30f8480a72be036e62c Mon Sep 17 00:00:00 2001 From: howec <> Date: Fri, 10 Nov 2023 10:07:42 +0800 Subject: [PATCH] =?UTF-8?q?=E9=99=95=E8=A5=BF=E5=BB=BA=E5=B7=A5-=E5=B2=97?= =?UTF-8?q?=E4=BD=8D=E7=94=B3=E8=AF=B7=E6=A0=A1=E9=AA=8C=E8=A7=84=E5=88=99?= =?UTF-8?q?=20=E9=9C=80=E6=B1=82=EF=BC=9A=201=E3=80=81=E6=8B=9B=E8=81=98?= =?UTF-8?q?=E9=97=A8=E6=88=B7=E5=BA=94=E8=81=98=E8=80=85=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E5=B2=97=E4=BD=8D=E5=8F=AA=E5=85=81=E8=AE=B8=E6=8A=95=E4=B8=80?= =?UTF-8?q?=E6=AC=A1=EF=BC=8C=E4=B8=80=E4=B8=AA=E5=8D=95=E4=BD=8D=E5=8F=AA?= =?UTF-8?q?=E5=85=81=E8=AE=B8=E6=8A=95=E4=B8=89=E4=B8=AA=E8=81=8C=E4=BD=8D?= =?UTF-8?q?=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 分校招和社招不?我记得陕建 社招和校招,投递本来就是有区别对待的。 2、高层次毕业院校只允许 清华大学 北京大学 浙江大学 哈尔滨工业大学 东南大学 天津大学 同济大学的投递 --- .../weaver/seconddev/sxjg/config/EbDbDataSourceConfig.java | 69 ++++++++++ .../seconddev/sxjg/controller/CheckPositionController.java | 41 ++++++ .../seconddev/sxjg/service/Impl/JoinPositionRuleImpl.java | 119 ++++++++++++++++++ .../com/weaver/seconddev/sxjg/service/JoinPositionRule.java | 10 ++ 4 files changed, 239 insertions(+) create mode 100644 陕建岗位申请规则校验(ecode服务)/src/main/java/com/weaver/seconddev/sxjg/config/EbDbDataSourceConfig.java create mode 100644 陕建岗位申请规则校验(ecode服务)/src/main/java/com/weaver/seconddev/sxjg/controller/CheckPositionController.java create mode 100644 陕建岗位申请规则校验(ecode服务)/src/main/java/com/weaver/seconddev/sxjg/service/Impl/JoinPositionRuleImpl.java create mode 100644 陕建岗位申请规则校验(ecode服务)/src/main/java/com/weaver/seconddev/sxjg/service/JoinPositionRule.java diff --git a/陕建岗位申请规则校验(ecode服务)/src/main/java/com/weaver/seconddev/sxjg/config/EbDbDataSourceConfig.java b/陕建岗位申请规则校验(ecode服务)/src/main/java/com/weaver/seconddev/sxjg/config/EbDbDataSourceConfig.java new file mode 100644 index 0000000..22fd272 --- /dev/null +++ b/陕建岗位申请规则校验(ecode服务)/src/main/java/com/weaver/seconddev/sxjg/config/EbDbDataSourceConfig.java @@ -0,0 +1,69 @@ +package com.weaver.seconddev.sxjg.config; + +import com.zaxxer.hikari.HikariDataSource; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.stereotype.Component; + +import javax.sql.DataSource; + +/** + * 数据库连接池,单例,二开服务(以后所有seconddev都放在这里) + * @author liuhao + */ +@Configuration +@Component +public class EbDbDataSourceConfig { + private static final Logger log = LoggerFactory.getLogger(EbDbDataSourceConfig.class); + + private static String url; + + private static String driverClassName; + + private static String username; + + private static String password; + private volatile static HikariDataSource dataSource; + + public static DataSource dbDataSource() { + if (dataSource ==null){ + synchronized (DataSource.class){ + if (dataSource == null){ + dataSource = new HikariDataSource(); + dataSource.setDriverClassName(driverClassName); + dataSource.setJdbcUrl(url); + dataSource.setUsername(username); + dataSource.setPassword(password); + // 连接池参数 + dataSource.setMaximumPoolSize(20); + dataSource.setPoolName("MyHikariCP2"); + dataSource.setConnectionTimeout(30000); + return dataSource; + } + } + } + return dataSource; + } + + @Value("${spring.datasource.urlebdesign}") + public void setUrl(String url) { + EbDbDataSourceConfig.url = url; + } + + @Value("${spring.datasource.driver-class-name}") + public void setDriverClassName(String driverClassName) { + EbDbDataSourceConfig.driverClassName = driverClassName; + } + + @Value("${spring.datasource.username}") + public void setUsername(String username) { + EbDbDataSourceConfig.username = username; + } + + @Value("${spring.datasource.password}") + public void setPassword(String password) { + EbDbDataSourceConfig.password = password; + } +} diff --git a/陕建岗位申请规则校验(ecode服务)/src/main/java/com/weaver/seconddev/sxjg/controller/CheckPositionController.java b/陕建岗位申请规则校验(ecode服务)/src/main/java/com/weaver/seconddev/sxjg/controller/CheckPositionController.java new file mode 100644 index 0000000..8881230 --- /dev/null +++ b/陕建岗位申请规则校验(ecode服务)/src/main/java/com/weaver/seconddev/sxjg/controller/CheckPositionController.java @@ -0,0 +1,41 @@ +package com.weaver.seconddev.sxjg.controller; + +import com.weaver.common.authority.annotation.WeaPermission; +import com.weaver.common.base.entity.result.WeaResult; +import com.weaver.seconddev.sxjg.service.JoinPositionRule; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.HashMap; +import java.util.Map; + +@RestController +@RequestMapping("/papi/secondev/sxjg") +@Slf4j +public class CheckPositionController { + + @Autowired + private JoinPositionRule joinPositionRule; + + /** + *一个单位只允许投三个职位; + * --- 分校招和社招不?我记得陕建 社招和校招,投递本来就是有区别对待的。 + * 2、高层次毕业院校只允许 清华大学 北京大学 浙江大学 哈尔滨工业大学 东南大学 天津大学 同济大学的投递 + */ + @WeaPermission(publicPermission = true) + @PostMapping("/checkPosition") + public WeaResult> check( + @RequestParam("talentId") String talentId, + @RequestParam("userId") String userId, + @RequestParam("userName") String userName, + @RequestParam("positionId") String positionId + ){ + Map rs = new HashMap<>(); + rs = joinPositionRule.JoinPositionRule(talentId,userId,userName,positionId); + return WeaResult.success(rs); + } +} \ No newline at end of file diff --git a/陕建岗位申请规则校验(ecode服务)/src/main/java/com/weaver/seconddev/sxjg/service/Impl/JoinPositionRuleImpl.java b/陕建岗位申请规则校验(ecode服务)/src/main/java/com/weaver/seconddev/sxjg/service/Impl/JoinPositionRuleImpl.java new file mode 100644 index 0000000..9f3c4c0 --- /dev/null +++ b/陕建岗位申请规则校验(ecode服务)/src/main/java/com/weaver/seconddev/sxjg/service/Impl/JoinPositionRuleImpl.java @@ -0,0 +1,119 @@ +package com.weaver.seconddev.sxjg.service.Impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.weaver.seconddev.sxjg.config.EbDbDataSourceConfig; +import com.weaver.seconddev.sxjg.service.JoinPositionRule; +import lombok.extern.slf4j.Slf4j; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +@Slf4j +@Service +public class JoinPositionRuleImpl implements JoinPositionRule { + + private JdbcTemplate jdbcTemplate = new JdbcTemplate(EbDbDataSourceConfig.dbDataSource()); + + @Override + public Map JoinPositionRule(String talentId,String userId,String userName,String positionId) { + Map rs8 = new HashMap<>(); + Map rs7 = schoolcheck(talentId,positionId); + if(rs7.get("result").equals("error")) { + return rs7; + } + //一人一岗 + if(checkOnePersonOnce(talentId,positionId)) { + rs8.put("result","error"); + rs8.put("message","同一职位不能重复投递!"); + return rs8; + } + //当前人再所有组织的岗位数量 + String sql = "select count(a.id) as nums,b.sub_company from uf_rcrt_candidate_batch a " + + "INNER JOIN uf_rcrt_position b on a.position_id = b.ID" + + " where a.talent_id = '"+talentId+"' GROUP BY b.sub_company"; + List> rs2 = jdbcTemplate.queryForList(sql); + log.error("sql1:"+sql); + if(CollectionUtil.isNotEmpty(rs2)) { + sql = "select sub_company from uf_rcrt_position where id = '"+positionId+"'"; + log.error("sql2:"+sql); + List> rs3 = jdbcTemplate.queryForList(sql); + if(CollectionUtil.isEmpty(rs3)) { + rs8.put("result","ok"); + return rs8; + } + for(Map map3: rs3) { + String companyid = (String)map3.get("sub_company"); + for(Map map2: rs2) { + String companyid2 = (String)map2.get("sub_company"); + long nums = (long)map2.get("nums"); + if(companyid2.equals(companyid)) { + if(nums >=3l) { + rs8.put("result","error"); + rs8.put("message","同一单位投递职位数量已上限,请选择其他单位职位投递!"); + return rs8; + } + } + } + } + } + rs8.put("result","ok"); + return rs8; + } + + /** + * 岗位学校配置 + */ + private Map schoolcheck(String talentId,String positionId){ + Map result = new HashMap<>(); + //判断该职位是否需要做学校限制 + String sql = "select xx from uf_position_schoollimit where zwxx = '"+positionId+"'"; + List> rs1 = jdbcTemplate.queryForList(sql); + if(CollectionUtil.isEmpty(rs1)) { + result.put("result", "ok"); + result.put("message", "该职位不需要做学校限制"); + return result; + } + + //根据人才基本信息id获取教育背景 + sql = "select school from rcrt_education_exp where form_data_id = '"+talentId+"'"; + List> rs2 = jdbcTemplate.queryForList(sql); + if(CollectionUtil.isNotEmpty(rs2)) { + //根据职位id获取高校 + boolean flag = false; + for(Map map2 : rs2) { + String school2 = (String)map2.get("school"); + for(Map map1 : rs1) { + String school1 = (String)map1.get("xx"); + if(school1.equals(school2)) { + flag = true; + break; + } + } + } + if(!flag) { + result.put("result", "error"); + result.put("message", "您不符合当前职位的招聘要求,请选择其他职位投递!"); + return result; + } + + }else { + result.put("result", "error"); + result.put("message", "该人员没有教育经历信息!"); + return result; + } + result.put("result", "ok"); + return result; + } + + /** + * 规则校验:一个人一个职位投递一次 + */ + private boolean checkOnePersonOnce(String talentId,String positionId) { + String sql = "select count(id) as nums from uf_rcrt_candidate_batch where position_id = '"+positionId+"' and talent_id = '"+talentId+"'"; + Map rs = jdbcTemplate.queryForMap(sql); + long nums = (long)rs.get("nums"); + return nums >0l; + } +} diff --git a/陕建岗位申请规则校验(ecode服务)/src/main/java/com/weaver/seconddev/sxjg/service/JoinPositionRule.java b/陕建岗位申请规则校验(ecode服务)/src/main/java/com/weaver/seconddev/sxjg/service/JoinPositionRule.java new file mode 100644 index 0000000..6d5de9c --- /dev/null +++ b/陕建岗位申请规则校验(ecode服务)/src/main/java/com/weaver/seconddev/sxjg/service/JoinPositionRule.java @@ -0,0 +1,10 @@ +package com.weaver.seconddev.sxjg.service; + +import java.util.Map; + +public interface JoinPositionRule { + /** + * 陕西建工-招聘首页岗位申请规则【自定义】 + */ + Map JoinPositionRule(String talentId,String userId,String userName,String positionId); +}