PostServiceImpl.java 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597
  1. package com.hz.employmentsite.services.impl.companyService;
  2. import com.github.pagehelper.PageHelper;
  3. import com.github.pagehelper.PageInfo;
  4. import com.hz.employmentsite.filter.exception.BaseException;
  5. import com.hz.employmentsite.mapper.*;
  6. import com.hz.employmentsite.mapper.cquery.LabelCQuery;
  7. import com.hz.employmentsite.mapper.cquery.PostCQuery;
  8. import com.hz.employmentsite.mapper.cquery.RecommendMgtCQuery;
  9. import com.hz.employmentsite.model.*;
  10. import com.hz.employmentsite.services.service.companyService.PostService;
  11. import com.hz.employmentsite.services.service.system.DictionaryService;
  12. import com.hz.employmentsite.util.RegexUtils;
  13. import com.hz.employmentsite.util.StringUtils;
  14. import com.hz.employmentsite.vo.companyService.PostVo;
  15. import com.hz.employmentsite.vo.companyService.RecommendPostVo;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Service;
  18. import java.util.*;
  19. import java.util.stream.Collectors;
  20. @Service("PostService")
  21. public class PostServiceImpl implements PostService {
  22. @Autowired
  23. private PostCQuery postCQuery;
  24. @Autowired
  25. private StringUtils stringUtils;
  26. @Autowired
  27. private RegexUtils regexUtils;
  28. @Autowired
  29. private PcPostMapper pcPostMapper;
  30. @Autowired
  31. private PcRecommendMapper pcRecommendMapper;
  32. @Autowired
  33. private PcRecommendMgtMapper pcRecommendMgtMapper;
  34. @Autowired
  35. private PcProfessionMapper pcProfessionMapper;
  36. @Autowired
  37. private PcCompanyMapper companyMapper;
  38. @Autowired
  39. private PcSiteUserMapper pcSiteUserMapper;
  40. @Autowired
  41. private DictionaryService dictionaryService;
  42. @Autowired
  43. private PcLabelPostMapper pcLabelPostMapper;
  44. @Autowired
  45. private LabelCQuery labelCQuery;
  46. @Autowired
  47. private PcWorkcategoryMapper pcWorkcategoryMapper;
  48. @Override
  49. public PageInfo<PostVo> getList(Integer page, Integer rows, List<String> postIDList,
  50. String professionName, Integer minCount, Integer maxCount,
  51. String companyName, String recordStatus, String companyID,
  52. String loginUserID, String siteID, Date startDate,
  53. Date endDate) {
  54. List<String> curLoginUserSiteCompanyIDs = new ArrayList<>();
  55. if (!stringUtils.IsNullOrEmpty(loginUserID)) {
  56. PcSiteUserExample siteUserExp = new PcSiteUserExample();
  57. siteUserExp.or().andUserIDEqualTo(loginUserID);
  58. var curLoginUserSiteID = pcSiteUserMapper.selectByExample(siteUserExp).get(0).getSiteID();
  59. PcCompanyExample companyExp = new PcCompanyExample();
  60. companyExp.or().andSiteIDEqualTo(curLoginUserSiteID);
  61. var curLoginUserSiteCompanyList = companyMapper.selectByExample(companyExp).stream().toList();
  62. for (PcCompany curLoginUserSiteCompany : curLoginUserSiteCompanyList) {
  63. curLoginUserSiteCompanyIDs.add(curLoginUserSiteCompany.getCompanyID());
  64. }
  65. }
  66. PageHelper.startPage(page, rows);
  67. List<PostVo> list = postCQuery.selectPostList(stringUtils.ListToInSql(postIDList), professionName, minCount, maxCount, companyName, recordStatus, companyID, stringUtils.ListToInSql(curLoginUserSiteCompanyIDs), siteID, startDate, endDate,false);
  68. if(list != null && list.size()>0){
  69. for(PostVo curPost : list){
  70. curPost.listLabel = labelCQuery.getPostLabelList(curPost.getPostID());
  71. var curPcPost = pcPostMapper.selectByPrimaryKey(curPost.getPostID());
  72. if (!stringUtils.IsNullOrEmpty(curPost.professionID)&&stringUtils.IsNullOrEmpty(curPost.postName)){
  73. PcProfessionExample professionExp = new PcProfessionExample();
  74. professionExp.or().andProfessionIDEqualTo(curPost.professionID);
  75. var curProfession = pcProfessionMapper.selectByExample(professionExp).stream().findFirst().orElse(null);
  76. if( curProfession!=null){
  77. curPcPost.setPostName(curProfession.getProfessionName());
  78. pcPostMapper.updateByPrimaryKey(curPcPost);
  79. }
  80. }
  81. if (!stringUtils.IsNullOrEmpty(curPost.workCode)&&stringUtils.IsNullOrEmpty(curPost.workName)){
  82. PcWorkcategoryExample workCategoryExp = new PcWorkcategoryExample();
  83. workCategoryExp.or().andWorkCategoryIDEqualTo(curPost.workCode);
  84. var curWorkCategory = pcWorkcategoryMapper.selectByExample(workCategoryExp).stream().findFirst().orElse(null);
  85. if( curWorkCategory!=null){
  86. curPcPost.setWorkName(curWorkCategory.getWorkCategoryName());
  87. pcPostMapper.updateByPrimaryKey(curPcPost);
  88. }
  89. }
  90. if (curPost.endTime != null && curPost.endTime.before(new Date()) && curPost.recordStatus.equals(1)) {
  91. curPcPost.setRecordStatus(0);
  92. pcPostMapper.updateByPrimaryKey(curPcPost);
  93. }
  94. }
  95. }
  96. PageInfo<PostVo> result = new PageInfo(list);
  97. return result;
  98. }
  99. @Override
  100. public PageInfo<RecommendPostVo> getCommendPostList(Integer page, Integer rows, String jobUserID) {
  101. PageHelper.startPage(page, rows);
  102. List<RecommendPostVo> list = postCQuery.selectRecommendPostList(jobUserID);
  103. PageInfo<RecommendPostVo> result = new PageInfo(list);
  104. return result;
  105. }
  106. @Override
  107. public Integer saveCommendPost(RecommendPostVo data, String userId) {
  108. int result = 0;
  109. PcRecommend dbData = null;
  110. if (data.recommendID != null) {
  111. PcRecommendExample exp = new PcRecommendExample();
  112. PcRecommendExample.Criteria cro = exp.createCriteria();
  113. cro.andPostIDEqualTo(data.recommendID);
  114. dbData = pcRecommendMapper.selectByExample(exp).stream().findFirst().orElse(null);
  115. }
  116. Boolean isExist = dbData != null;
  117. if (!isExist) {
  118. dbData = new PcRecommend();
  119. dbData.setRecommendID(UUID.randomUUID().toString());
  120. dbData.setJobuserID(data.jobUserID);
  121. dbData.setPostID(data.postID);
  122. dbData.setIsRead(data.isRead == null ? false : true);
  123. dbData.setIsSendnotes(data.isSendNotes == null ? false : true);
  124. dbData.setCreateTime(new Date());
  125. dbData.setCreateUserID(userId);
  126. result = pcRecommendMapper.insert(dbData);
  127. } else {
  128. dbData.setJobuserID(data.jobUserID);
  129. dbData.setPostID(data.postID);
  130. dbData.setIsRead(data.isRead == null ? false : true);
  131. dbData.setIsSendnotes(data.isSendNotes == null ? false : true);
  132. dbData.setModifyTime(new Date());
  133. dbData.setModifyUserID(userId);
  134. result = pcRecommendMapper.updateByPrimaryKeySelective(dbData);
  135. }
  136. return result;
  137. }
  138. @Override
  139. public int updatePostStatus(String postID, Integer status) {
  140. PcPost post = pcPostMapper.selectByPrimaryKey(postID);
  141. if(status.equals(1)&&post.getEndTime().before(new Date())){
  142. throw new BaseException("","该岗位招聘日期已结束,不能启用!");
  143. }
  144. post.setRecordStatus(status);
  145. return pcPostMapper.updateByPrimaryKey(post);
  146. }
  147. @Override
  148. public int save(PostVo data, String userId) {
  149. int result = 0;
  150. PcPost dbData = null;
  151. Boolean isExist = data.getPostID() != null;
  152. PcPostExample exp = new PcPostExample();
  153. PcPostExample.Criteria cro = exp.createCriteria();
  154. if (isExist) {
  155. cro.andPostIDEqualTo(data.getPostID());
  156. dbData = pcPostMapper.selectByExample(exp).stream().findFirst().orElse(null);
  157. }
  158. //判断岗位id是否为空
  159. if (stringUtils.IsNullOrEmpty(data.getProfessionID())) {
  160. PcProfessionExample proEmp = new PcProfessionExample();
  161. PcProfessionExample.Criteria proCia = proEmp.or();
  162. proCia.andParentProfessionIDNotEqualTo("");
  163. proCia.andProfessionNameEqualTo("其他");
  164. //获取二级其他信息
  165. PcProfession proOther = pcProfessionMapper.selectByExample(proEmp).stream().findFirst().orElse(null);
  166. if (proOther != null) {
  167. proEmp = new PcProfessionExample();
  168. proEmp.or().andParentProfessionIDEqualTo(proOther.getProfessionID()).andProfessionNameIsNotNull();
  169. // proCia.andProfessionNameEqualTo(data.getProfessionName());
  170. //查询其他岗位
  171. List<PcProfession> proOtherSonList = pcProfessionMapper.selectByExample(proEmp);
  172. PcProfession proOtherSon = proOtherSonList.stream()
  173. .filter(x -> x.getProfessionName().equals(data.getProfessionName())).findFirst().orElse(null);
  174. if (proOtherSon != null) {
  175. data.setProfessionID(proOtherSon.getProfessionID());
  176. } else {
  177. data.setProfessionID(UUID.randomUUID().toString());
  178. PcProfession proModel = new PcProfession();
  179. proModel.setProfessionID(data.getProfessionID());
  180. proModel.setParentProfessionID(proOther.getProfessionID());
  181. proModel.setProfessionName(data.getProfessionName());
  182. proModel.setStatus(Integer.parseInt("1"));
  183. proModel.setOrderNo(proOtherSonList.size() + 1);
  184. pcProfessionMapper.insert(proModel);
  185. }
  186. }
  187. }
  188. if (dbData == null) {
  189. dbData = new PcPost();
  190. dbData.setPostID(UUID.randomUUID().toString());
  191. dbData.setProfessionID(data.getProfessionID());
  192. dbData.setWorkCode(data.getWorkCode());
  193. dbData.setWorkName(data.getWorkName());
  194. dbData.setValidTime(data.getValidTime());
  195. dbData.setRecruitCount(data.getRecruitCount());
  196. dbData.setCompanyID(data.getCompanyID());
  197. dbData.setPostName(data.getPostName());
  198. dbData.setRecordStatus(data.getRecordStatus());
  199. dbData.setWorkNature(data.getWorkNature());
  200. dbData.setValidDay(data.getValidDay());
  201. dbData.setWorkYear(data.getWorkYear());
  202. dbData.setWorkNature(data.getWorkNature());
  203. dbData.setCultureRank(data.getCultureRank());
  204. dbData.setPostDesc(data.getPostDesc());
  205. dbData.setMaxSalary(data.getMaxSalary());
  206. dbData.setMinSalary(data.getMinSalary());
  207. dbData.setWelfare(data.getWelfare());
  208. dbData.setUserName(data.getUserName());
  209. dbData.setUserMobile(data.getUserMobile());
  210. dbData.setPostEmail(data.getPostEmail());
  211. dbData.setWorkTime(data.getWorkTime());
  212. dbData.setIsTrail(data.getIsTrail());
  213. dbData.setTrailMonths(data.getTrailMonths());
  214. dbData.setTrailMaxSalary(data.getTrailMaxSalary());
  215. dbData.setTrailMinSalary(data.getTrailMinSalary());
  216. dbData.setCreateTime(new Date());
  217. dbData.setCreateUserID(userId);
  218. dbData.setJobPlace(data.getJobPlace());
  219. dbData.setStartTime(data.getStartTime());
  220. dbData.setEndTime(data.getEndTime());
  221. dbData.setContactName(data.getContactName());
  222. dbData.setContactMobile(data.getContactMobile());
  223. dbData.setContactEmail(data.getContactEmail());
  224. dbData.setWorkNatureID(data.getWorkNatureID());
  225. // dbData.setTagID(data.getTagID());
  226. result = pcPostMapper.insert(dbData);
  227. } else {
  228. dbData.setProfessionID(data.getProfessionID());
  229. dbData.setWorkCode(data.getWorkCode());
  230. dbData.setValidTime(data.getValidTime());
  231. dbData.setWorkName(data.getWorkName());
  232. dbData.setRecruitCount(data.getRecruitCount());
  233. dbData.setCompanyID(data.getCompanyID());
  234. dbData.setPostName(data.getPostName());
  235. dbData.setRecordStatus(data.getRecordStatus());
  236. dbData.setWorkNature(data.getWorkNature());
  237. dbData.setValidDay(data.getValidDay());
  238. dbData.setWorkYear(data.getWorkYear());
  239. dbData.setWorkNature(data.getWorkNature());
  240. dbData.setCultureRank(data.getCultureRank());
  241. dbData.setPostDesc(data.getPostDesc());
  242. dbData.setMaxSalary(data.getMaxSalary());
  243. dbData.setMinSalary(data.getMinSalary());
  244. dbData.setWelfare(data.getWelfare());
  245. dbData.setUserName(data.getUserName());
  246. dbData.setUserMobile(data.getUserMobile());
  247. dbData.setPostEmail(data.getPostEmail());
  248. dbData.setWorkTime(data.getWorkTime());
  249. dbData.setIsTrail(data.getIsTrail());
  250. dbData.setTrailMonths(data.getTrailMonths());
  251. dbData.setTrailMaxSalary(data.getTrailMaxSalary());
  252. dbData.setTrailMinSalary(data.getTrailMinSalary());
  253. dbData.setModifyTime(new Date());
  254. dbData.setModifyUserID(userId);
  255. dbData.setJobPlace(data.getJobPlace());
  256. dbData.setStartTime(data.getStartTime());
  257. dbData.setEndTime(data.getEndTime());
  258. dbData.setContactName(data.getContactName());
  259. dbData.setContactMobile(data.getContactMobile());
  260. dbData.setContactEmail(data.getContactEmail());
  261. dbData.setWorkNatureID(data.getWorkNatureID());
  262. // dbData.setTagID(data.getTagID());
  263. result = pcPostMapper.updateByPrimaryKeyWithBLOBs(dbData);
  264. }
  265. PcLabelPostExample labelEmp = new PcLabelPostExample();
  266. labelEmp.or().andPostIDEqualTo(data.getPostID());
  267. pcLabelPostMapper.deleteByExample(labelEmp);
  268. if (data.listLabel != null && data.listLabel.size() > 0) {
  269. data.listLabel.forEach(x -> {
  270. PcLabelPost labelModel = new PcLabelPost();
  271. labelModel.setPostID(data.getPostID());
  272. labelModel.setLabelID(x.getLabelID());
  273. pcLabelPostMapper.insert(labelModel);
  274. });
  275. }
  276. return result;
  277. }
  278. @Override
  279. public int delete(List<String> idList) {
  280. int result = 0;
  281. PcRecommendMgtExample recommendMgtExp = new PcRecommendMgtExample();
  282. recommendMgtExp.or().andPostIDIn(idList);
  283. List<PcRecommendMgt> resultList = pcRecommendMgtMapper.selectByExample(recommendMgtExp).stream().toList();
  284. if( resultList.size() > 0 ) {
  285. throw new BaseException("10004","已存在该岗位的推荐数据,删除失败!");
  286. }
  287. PcPostExample postExp = new PcPostExample();
  288. postExp.or().andPostIDIn(idList);
  289. result = pcPostMapper.deleteByExample(postExp);
  290. if (result > 0) {
  291. PcLabelPostExample labelEmp = new PcLabelPostExample();
  292. labelEmp.or().andPostIDIn(idList);
  293. pcLabelPostMapper.deleteByExample(labelEmp);
  294. }
  295. return result;
  296. }
  297. @Override
  298. public int deletePostAndRecommendMgt(String id) {
  299. try {
  300. PcRecommendMgtExample exp = new PcRecommendMgtExample();
  301. PcRecommendMgtExample.Criteria cro = exp.or();
  302. cro.andPostIDEqualTo(id);
  303. pcRecommendMgtMapper.deleteByExample(exp);
  304. PcLabelPostExample labelEmp = new PcLabelPostExample();
  305. labelEmp.or().andPostIDEqualTo(id);
  306. pcLabelPostMapper.deleteByExample(labelEmp);
  307. return pcPostMapper.deleteByPrimaryKey(id);
  308. } catch (Exception e) {
  309. e.printStackTrace();
  310. return 0;
  311. }
  312. }
  313. @Override
  314. public PostVo getDataById(String id,boolean isAllPost) {
  315. if (stringUtils.IsNullOrEmpty(id)) {
  316. return null;
  317. }
  318. PostVo data = postCQuery.selectPostList(stringUtils.ListToInSql(Arrays.asList(id)), null, null, null, null, null, null, null, null, null, null,isAllPost).stream().findFirst().orElse(null);
  319. if (data != null) {
  320. data.listLabel = labelCQuery.getPostLabelList(id);
  321. }
  322. return data;
  323. }
  324. @Override
  325. public List<PostVo> getDataListByCompanyID(String companyId) {
  326. List<PostVo> resultList = new ArrayList<>();
  327. PcPostExample postExp = new PcPostExample();
  328. postExp.or().andCompanyIDEqualTo(companyId);
  329. var postList = pcPostMapper.selectByExample(postExp);
  330. for (PcPost curPost : postList) {
  331. PostVo item = new PostVo();
  332. item.setPostID(curPost.getPostID());
  333. item.setProfessionID(curPost.getProfessionID());
  334. PcProfessionExample professionExp = new PcProfessionExample();
  335. professionExp.or().andProfessionIDEqualTo(curPost.getProfessionID());
  336. var curProfession = pcProfessionMapper.selectByExample(professionExp).get(0);
  337. item.setProfessionName(curProfession.getProfessionName());
  338. item.setCompanyID(curPost.getCompanyID());
  339. item.setRecruitCount(curPost.getRecruitCount());
  340. item.setStartTime(curPost.getStartTime());
  341. item.setEndTime(curPost.getEndTime());
  342. resultList.add(item);
  343. }
  344. return resultList;
  345. }
  346. public static boolean isPositiveInteger(String str) {
  347. try {
  348. // 尝试将字符串转换为整数
  349. int num = Integer.parseInt(str);
  350. // 如果转换后的整数小于等于0,则为false
  351. return num > 0;
  352. } catch (NumberFormatException e) {
  353. // 字符串无法转换为整数,则为false
  354. return false;
  355. }
  356. }
  357. @Override
  358. public List<PostVo> importPost(List<PostVo> dataList, String userID) {
  359. if (dataList.size() <= 0)
  360. throw new BaseException("", "请添加导入数据!");
  361. //所属企业
  362. PcCompanyExample companyExp = new PcCompanyExample();
  363. companyExp.or().andRecordStatusEqualTo(1);
  364. List<PcCompany> companyList = companyMapper.selectByExample(companyExp);
  365. //岗位信息
  366. List<SysDictionaryItem> thirdLevelProfessionList = new ArrayList<>();
  367. PcProfessionExample professionExp = new PcProfessionExample();
  368. professionExp.or().andParentProfessionIDEqualTo("").andStatusEqualTo(1);
  369. var firstLevelData = pcProfessionMapper.selectByExample(professionExp);
  370. for (PcProfession curProfession : firstLevelData) {
  371. professionExp = new PcProfessionExample();
  372. professionExp.or().andParentProfessionIDEqualTo(curProfession.getProfessionID()).andStatusEqualTo(1);
  373. var secondLevelData = pcProfessionMapper.selectByExample(professionExp);
  374. for (PcProfession curParentProfession : secondLevelData) {
  375. professionExp = new PcProfessionExample();
  376. professionExp.or().andParentProfessionIDEqualTo(curParentProfession.getProfessionID()).andStatusEqualTo(1).andProfessionNameIsNotNull();
  377. var thirdLevelData = pcProfessionMapper.selectByExample(professionExp);
  378. for (PcProfession curItem : thirdLevelData) {
  379. SysDictionaryItem item = new SysDictionaryItem();
  380. item.setCode(curItem.getProfessionID());
  381. item.setName(curItem.getProfessionName());
  382. thirdLevelProfessionList.add(item);
  383. }
  384. }
  385. }
  386. // 工种信息
  387. List<SysDictionaryItem> WorkCategoryList = new ArrayList<>();
  388. // 获取第一级工种
  389. PcWorkcategoryExample workCategoryExample = new PcWorkcategoryExample();
  390. workCategoryExample.or().andParentWorkCategoryIDEqualTo("").andStatusEqualTo(1);
  391. List<PcWorkcategory> firstLevelWorkCategoryList = pcWorkcategoryMapper.selectByExample(workCategoryExample);
  392. for (PcWorkcategory pcWorkcategory : firstLevelWorkCategoryList) {
  393. // 获取第二级工种
  394. workCategoryExample = new PcWorkcategoryExample();
  395. workCategoryExample.or().andParentWorkCategoryIDEqualTo(pcWorkcategory.getWorkCategoryID()).andStatusEqualTo(1);
  396. List<PcWorkcategory> secondLevelWorkCategoryList = pcWorkcategoryMapper.selectByExample(workCategoryExample);
  397. for (PcWorkcategory workCategory : secondLevelWorkCategoryList) {
  398. // 获取第三级工种
  399. workCategoryExample = new PcWorkcategoryExample();
  400. workCategoryExample.or().andParentWorkCategoryIDEqualTo(workCategory.getWorkCategoryID()).andStatusEqualTo(1);
  401. List<PcWorkcategory> thirdLevelWorkCategoryList = pcWorkcategoryMapper.selectByExample(workCategoryExample);
  402. for (PcWorkcategory pcWorkCategory1 : thirdLevelWorkCategoryList) {
  403. SysDictionaryItem item = new SysDictionaryItem();
  404. item.setCode(pcWorkCategory1.getWorkCategoryID());
  405. item.setName(pcWorkCategory1.getWorkCategoryName());
  406. WorkCategoryList.add(item);
  407. }
  408. }
  409. }
  410. //文化程度
  411. List<SysDictionaryItem> dicCultureDataList = dictionaryService.getDictionaryItemList("CultureLevel");
  412. // 工作年限
  413. List<SysDictionaryItem> dicWorkYearDataList = dictionaryService.getDictionaryItemList("WorkYearType");
  414. // 最终处理数据
  415. List<PostVo> resultList = new ArrayList<>(); // 岗位
  416. List<PcProfession> pcProfessionList = new ArrayList<>(); // 岗位字典
  417. // 获取二级的“其他”岗位
  418. PcProfessionExample proEmp = new PcProfessionExample();
  419. PcProfessionExample.Criteria proCia = proEmp.or();
  420. proCia.andParentProfessionIDNotEqualTo("");
  421. proCia.andProfessionNameEqualTo("其他");
  422. PcProfession proOther = pcProfessionMapper.selectByExample(proEmp).stream().findFirst().orElse(null);
  423. proEmp = new PcProfessionExample();
  424. proEmp.or().andParentProfessionIDEqualTo(proOther.getProfessionID()).andProfessionNameIsNotNull();
  425. //查询已存在的三级“其他”岗位
  426. List<PcProfession> proOtherSonList = pcProfessionMapper.selectByExample(proEmp);
  427. dataList.forEach(item -> {
  428. String errorInfo = "";
  429. item.setPostID(UUID.randomUUID().toString());
  430. item.setRecordStatus(1);
  431. if (stringUtils.IsNullOrEmpty(item.companyName))
  432. errorInfo += "请填写企业名称!";
  433. else {
  434. item.companyID = companyList.stream().filter(it -> it.getCompanyName().equals(item.getCompanyName().trim()))
  435. .findFirst().orElse(new PcCompany()).getCompanyID();
  436. if (item.companyID == null)
  437. errorInfo += "企业不存在!";
  438. }
  439. if (stringUtils.IsNullOrEmpty(item.professionName))
  440. errorInfo += "请填写岗位名称!";
  441. else {
  442. item.professionID = thirdLevelProfessionList.stream().filter(it -> it.getName() != null && it.getName().equals(item.getProfessionName().trim()))
  443. .findFirst().orElse(new SysDictionaryItem()).getCode();
  444. if (item.professionID == null || item.professionID == "") {
  445. // 如果岗位不存在,则在“其他”下添加一个
  446. if (proOther != null) {
  447. item.setProfessionID(UUID.randomUUID().toString());
  448. PcProfession proModel = new PcProfession();
  449. proModel.setProfessionID(item.getProfessionID());
  450. proModel.setParentProfessionID(proOther.getProfessionID());
  451. proModel.setProfessionName(item.getProfessionName());
  452. proModel.setStatus(Integer.parseInt("1"));
  453. proModel.setOrderNo(proOtherSonList.size() + 1);
  454. pcProfessionList.add(proModel);
  455. // 先将该岗位临时存储在第三级数据中,防止在最终添加之前,向pcProfessionList生成多个相同名称的岗位字典数据
  456. SysDictionaryItem dictionaryItem = new SysDictionaryItem();
  457. dictionaryItem.setCode(item.getProfessionID());
  458. dictionaryItem.setName(item.getProfessionName());
  459. thirdLevelProfessionList.add(dictionaryItem);
  460. }
  461. }
  462. }
  463. if (stringUtils.IsNullOrEmpty(item.getWorkCategoryName())) {
  464. errorInfo += "请填写工种名称";
  465. } else {
  466. item.workCode = WorkCategoryList.stream().filter(it -> it.getName() != null && it.getName().equals(item.getWorkCategoryName().trim()))
  467. .findFirst().orElse(new SysDictionaryItem()).getCode();
  468. if (item.workCode == null || item.workCode == "") {
  469. errorInfo += "工种不存在!";
  470. }else{
  471. item.workName = item.getWorkCategoryName();
  472. }
  473. }
  474. if (stringUtils.IsNullOrEmpty(String.valueOf(item.recruitCountStr)))
  475. errorInfo += "请填写招聘人数!";
  476. else{
  477. if(!isPositiveInteger(item.recruitCountStr)){
  478. errorInfo += "招聘人数必须为一个正整数!";
  479. }else{
  480. item.setRecruitCount(Integer.valueOf(item.recruitCountStr));
  481. }
  482. }
  483. if (stringUtils.IsNullOrEmpty(String.valueOf(item.startTime)) || item.startTime == null)
  484. errorInfo += "请填写开始日期!";
  485. if (stringUtils.IsNullOrEmpty(String.valueOf(item.startTime)) || item.startTime == null)
  486. errorInfo += "请填写结束日期!";
  487. if (stringUtils.IsNullOrEmpty(item.jobPlace))
  488. errorInfo += "请填写工作地点!";
  489. if (!stringUtils.IsNullOrEmpty(item.getWorkYearName())) {
  490. item.workYear = dicWorkYearDataList.stream().filter(it -> it.getName() != null && it.getName().equals(item.getWorkYearName().trim()))
  491. .findFirst().orElse(new SysDictionaryItem()).getValue();
  492. if (item.workYear == null)
  493. errorInfo += "工作年限不存在!";
  494. }
  495. if (item.isTrailName.trim().equals("是")) item.isTrail = true;
  496. else if (item.isTrailName.trim().equals("否")) item.isTrail = false;
  497. if (!stringUtils.IsNullOrEmpty(item.cultureLevelName)) {
  498. item.cultureRank = dicCultureDataList.stream().filter(it -> it.getName() != null && it.getName().equals(item.cultureLevelName.trim()))
  499. .findFirst().orElse(new SysDictionaryItem()).getValue();
  500. if (item.cultureRank == null || item.cultureRank == 0)
  501. errorInfo += "输入的学历要求不存在!";
  502. }
  503. if (!stringUtils.IsNullOrEmpty(item.getContactMobile())) {
  504. if (!regexUtils.theMobileIsValid( item.contactMobile,true)) {
  505. errorInfo += "输入的联系人电话格式不正确";
  506. }
  507. }
  508. if (!stringUtils.IsNullOrEmpty(item.getCompanyEmail())) {
  509. if (!regexUtils.theEmailIsValid(item.contactEmail)) {
  510. errorInfo += "输入的邮箱格式不正确";
  511. }
  512. }
  513. if (stringUtils.IsNullOrEmpty(errorInfo)) {
  514. resultList.add(item);
  515. } else {
  516. item.setErrorMessage(errorInfo);
  517. }
  518. });
  519. if (dataList.stream().filter(it -> !stringUtils.IsNullOrEmpty(it.errorMessage)).collect(Collectors.toList()).size() > 0)
  520. return dataList;
  521. resultList.forEach(item -> {
  522. save(item, userID);
  523. });
  524. // 添加岗位名称字典
  525. pcProfessionList.forEach(item -> {
  526. pcProfessionMapper.insert(item);
  527. });
  528. return null;
  529. }
  530. /**
  531. * 企业数据可视化地图页面获取岗位
  532. *
  533. * @param companyID 企业ID
  534. * @return 岗位信息
  535. */
  536. @Override
  537. public PageInfo<PostVo> selectCompanyMapPostList(int pageIndex, int pageSize, String companyID) {
  538. PageHelper.startPage(pageIndex, pageSize);
  539. List<PostVo> postVos = postCQuery.selectCompanyMapPostList(companyID);
  540. PageInfo<PostVo> result = new PageInfo(postVos);
  541. return result;
  542. }
  543. }