PostServiceImpl.java 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474
  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.StringUtils;
  13. import com.hz.employmentsite.vo.companyService.PostVo;
  14. import com.hz.employmentsite.vo.companyService.RecommendPostVo;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.stereotype.Service;
  17. import java.util.*;
  18. import java.util.stream.Collectors;
  19. @Service("PostService")
  20. public class PostServiceImpl implements PostService {
  21. @Autowired
  22. private PostCQuery postCQuery;
  23. @Autowired
  24. private StringUtils stringUtils;
  25. @Autowired
  26. private PcPostMapper pcPostMapper;
  27. @Autowired
  28. private PcRecommendMapper pcRecommendMapper;
  29. @Autowired
  30. private PcRecommendMgtMapper pcRecommendMgtMapper;
  31. @Autowired
  32. private PcProfessionMapper pcProfessionMapper;
  33. @Autowired
  34. private PcCompanyMapper companyMapper;
  35. @Autowired
  36. private PcSiteUserMapper pcSiteUserMapper;
  37. @Autowired
  38. private DictionaryService dictionaryService;
  39. @Autowired
  40. private PcLabelPostMapper pcLabelPostMapper;
  41. @Autowired
  42. private LabelCQuery labelCQuery;
  43. @Autowired
  44. private RecommendMgtCQuery recommendMgtCQuery;
  45. @Autowired
  46. private PcWorkcategoryMapper pcWorkcategoryMapper;
  47. @Override
  48. public PageInfo<PostVo> getList(Integer page, Integer rows, List<String> postIDList,
  49. String professionName, Integer minCount, Integer maxCount,
  50. String companyName, String recordStatus, String companyID,
  51. String loginUserID, String siteID, Date startDate,
  52. Date endDate) {
  53. List<String> curLoginUserSiteCompanyIDs = new ArrayList<>();
  54. if (!stringUtils.IsNullOrEmpty(loginUserID)) {
  55. PcSiteUserExample siteUserExp = new PcSiteUserExample();
  56. siteUserExp.or().andUserIDEqualTo(loginUserID);
  57. var curLoginUserSiteID = pcSiteUserMapper.selectByExample(siteUserExp).get(0).getSiteID();
  58. PcCompanyExample companyExp = new PcCompanyExample();
  59. companyExp.or().andSiteIDEqualTo(curLoginUserSiteID);
  60. var curLoginUserSiteCompanyList = companyMapper.selectByExample(companyExp).stream().toList();
  61. for (PcCompany curLoginUserSiteCompany : curLoginUserSiteCompanyList) {
  62. curLoginUserSiteCompanyIDs.add(curLoginUserSiteCompany.getCompanyID());
  63. }
  64. }
  65. PageHelper.startPage(page, rows);
  66. List<PostVo> list = postCQuery.selectPostList(stringUtils.ListToInSql(postIDList), professionName, minCount, maxCount, companyName, recordStatus, companyID, stringUtils.ListToInSql(curLoginUserSiteCompanyIDs), siteID, startDate, endDate);
  67. if(list != null && list.size()>0){
  68. for(PostVo curPost : list){
  69. curPost.listLabel = labelCQuery.getPostLabelList(curPost.getPostID());
  70. }
  71. }
  72. PageInfo<PostVo> result = new PageInfo(list);
  73. return result;
  74. }
  75. @Override
  76. public PageInfo<RecommendPostVo> getCommendPostList(Integer page, Integer rows, String jobUserID) {
  77. PageHelper.startPage(page, rows);
  78. List<RecommendPostVo> list = postCQuery.selectRecommendPostList(jobUserID);
  79. PageInfo<RecommendPostVo> result = new PageInfo(list);
  80. return result;
  81. }
  82. @Override
  83. public Integer saveCommendPost(RecommendPostVo data, String userId) {
  84. int result = 0;
  85. PcRecommend dbData = null;
  86. if (data.recommendID != null) {
  87. PcRecommendExample exp = new PcRecommendExample();
  88. PcRecommendExample.Criteria cro = exp.createCriteria();
  89. cro.andPostIDEqualTo(data.recommendID);
  90. dbData = pcRecommendMapper.selectByExample(exp).stream().findFirst().orElse(null);
  91. }
  92. Boolean isExist = dbData != null;
  93. if (!isExist) {
  94. dbData = new PcRecommend();
  95. dbData.setRecommendID(UUID.randomUUID().toString());
  96. dbData.setJobuserID(data.jobUserID);
  97. dbData.setPostID(data.postID);
  98. dbData.setIsRead(data.isRead == null ? false : true);
  99. dbData.setIsSendnotes(data.isSendNotes == null ? false : true);
  100. dbData.setCreateTime(new Date());
  101. dbData.setCreateUserID(userId);
  102. result = pcRecommendMapper.insert(dbData);
  103. } else {
  104. dbData.setJobuserID(data.jobUserID);
  105. dbData.setPostID(data.postID);
  106. dbData.setIsRead(data.isRead == null ? false : true);
  107. dbData.setIsSendnotes(data.isSendNotes == null ? false : true);
  108. dbData.setModifyTime(new Date());
  109. dbData.setModifyUserID(userId);
  110. result = pcRecommendMapper.updateByPrimaryKeySelective(dbData);
  111. }
  112. return result;
  113. }
  114. @Override
  115. public int save(PostVo data, String userId) {
  116. int result = 0;
  117. PcPost dbData = null;
  118. Boolean isExist = data.getPostID() != null;
  119. PcPostExample exp = new PcPostExample();
  120. PcPostExample.Criteria cro = exp.createCriteria();
  121. if (isExist) {
  122. cro.andPostIDEqualTo(data.getPostID());
  123. dbData = pcPostMapper.selectByExample(exp).stream().findFirst().orElse(null);
  124. }
  125. //判断岗位id是否为空
  126. if (stringUtils.IsNullOrEmpty(data.getProfessionID())) {
  127. PcProfessionExample proEmp = new PcProfessionExample();
  128. PcProfessionExample.Criteria proCia = proEmp.or();
  129. proCia.andParentProfessionIDNotEqualTo("");
  130. proCia.andProfessionNameEqualTo("其他");
  131. //获取二级其他信息
  132. PcProfession proOther = pcProfessionMapper.selectByExample(proEmp).stream().findFirst().orElse(null);
  133. if (proOther != null) {
  134. proEmp = new PcProfessionExample();
  135. proEmp.or().andParentProfessionIDEqualTo(proOther.getProfessionID());
  136. // proCia.andProfessionNameEqualTo(data.getProfessionName());
  137. //查询其他岗位
  138. List<PcProfession> proOtherSonList = pcProfessionMapper.selectByExample(proEmp);
  139. PcProfession proOtherSon = proOtherSonList.stream()
  140. .filter(x -> x.getProfessionName().equals(data.getProfessionName())).findFirst().orElse(null);
  141. if (proOtherSon != null) {
  142. data.setProfessionID(proOtherSon.getProfessionID());
  143. } else {
  144. data.setProfessionID(UUID.randomUUID().toString());
  145. PcProfession proModel = new PcProfession();
  146. proModel.setProfessionID(data.getProfessionID());
  147. proModel.setParentProfessionID(proOther.getProfessionID());
  148. proModel.setProfessionName(data.getProfessionName());
  149. proModel.setStatus(Integer.parseInt("1"));
  150. proModel.setOrderNo(proOtherSonList.size() + 1);
  151. pcProfessionMapper.insert(proModel);
  152. }
  153. }
  154. }
  155. if (dbData == null) {
  156. dbData = new PcPost();
  157. dbData.setPostID(UUID.randomUUID().toString());
  158. dbData.setProfessionID(data.getProfessionID());
  159. dbData.setWorkCode(data.getWorkCode());
  160. dbData.setWorkName(data.getWorkName());
  161. dbData.setValidTime(data.getValidTime());
  162. dbData.setRecruitCount(data.getRecruitCount());
  163. dbData.setCompanyID(data.getCompanyID());
  164. dbData.setPostName(data.getPostName());
  165. dbData.setRecordStatus(data.getRecordStatus());
  166. dbData.setWorkNature(data.getWorkNature());
  167. dbData.setValidDay(data.getValidDay());
  168. dbData.setWorkYear(data.getWorkYear());
  169. dbData.setWorkNature(data.getWorkNature());
  170. dbData.setCultureRank(data.getCultureRank());
  171. dbData.setPostDesc(data.getPostDesc());
  172. dbData.setMaxSalary(data.getMaxSalary());
  173. dbData.setMinSalary(data.getMinSalary());
  174. dbData.setWelfare(data.getWelfare());
  175. dbData.setUserName(data.getUserName());
  176. dbData.setUserMobile(data.getUserMobile());
  177. dbData.setPostEmail(data.getPostEmail());
  178. dbData.setWorkTime(data.getWorkTime());
  179. dbData.setIsTrail(data.getIsTrail());
  180. dbData.setTrailMonths(data.getTrailMonths());
  181. dbData.setTrailMaxSalary(data.getTrailMaxSalary());
  182. dbData.setTrailMinSalary(data.getTrailMinSalary());
  183. dbData.setCreateTime(new Date());
  184. dbData.setCreateUserID(userId);
  185. dbData.setJobPlace(data.getJobPlace());
  186. dbData.setStartTime(data.getStartTime());
  187. dbData.setEndTime(data.getEndTime());
  188. dbData.setContactName(data.getContactName());
  189. dbData.setContactMobile(data.getContactMobile());
  190. dbData.setContactEmail(data.getContactEmail());
  191. dbData.setWorkNatureID(data.getWorkNatureID());
  192. // dbData.setTagID(data.getTagID());
  193. result = pcPostMapper.insert(dbData);
  194. } else {
  195. dbData.setProfessionID(data.getProfessionID());
  196. dbData.setWorkCode(data.getWorkCode());
  197. dbData.setValidTime(data.getValidTime());
  198. dbData.setWorkName(data.getWorkName());
  199. dbData.setRecruitCount(data.getRecruitCount());
  200. dbData.setCompanyID(data.getCompanyID());
  201. dbData.setPostName(data.getPostName());
  202. dbData.setRecordStatus(data.getRecordStatus());
  203. dbData.setWorkNature(data.getWorkNature());
  204. dbData.setValidDay(data.getValidDay());
  205. dbData.setWorkYear(data.getWorkYear());
  206. dbData.setWorkNature(data.getWorkNature());
  207. dbData.setCultureRank(data.getCultureRank());
  208. dbData.setPostDesc(data.getPostDesc());
  209. dbData.setMaxSalary(data.getMaxSalary());
  210. dbData.setMinSalary(data.getMinSalary());
  211. dbData.setWelfare(data.getWelfare());
  212. dbData.setUserName(data.getUserName());
  213. dbData.setUserMobile(data.getUserMobile());
  214. dbData.setPostEmail(data.getPostEmail());
  215. dbData.setWorkTime(data.getWorkTime());
  216. dbData.setIsTrail(data.getIsTrail());
  217. dbData.setTrailMonths(data.getTrailMonths());
  218. dbData.setTrailMaxSalary(data.getTrailMaxSalary());
  219. dbData.setTrailMinSalary(data.getTrailMinSalary());
  220. dbData.setModifyTime(new Date());
  221. dbData.setModifyUserID(userId);
  222. dbData.setJobPlace(data.getJobPlace());
  223. dbData.setStartTime(data.getStartTime());
  224. dbData.setEndTime(data.getEndTime());
  225. dbData.setContactName(data.getContactName());
  226. dbData.setContactMobile(data.getContactMobile());
  227. dbData.setContactEmail(data.getContactEmail());
  228. dbData.setWorkNatureID(data.getWorkNatureID());
  229. // dbData.setTagID(data.getTagID());
  230. result = pcPostMapper.updateByPrimaryKeyWithBLOBs(dbData);
  231. }
  232. PcLabelPostExample labelEmp = new PcLabelPostExample();
  233. labelEmp.or().andPostIDEqualTo(data.getPostID());
  234. pcLabelPostMapper.deleteByExample(labelEmp);
  235. if (data.listLabel != null && data.listLabel.size() > 0) {
  236. data.listLabel.forEach(x -> {
  237. PcLabelPost labelModel = new PcLabelPost();
  238. labelModel.setPostID(data.getPostID());
  239. labelModel.setLabelID(x.getLabelID());
  240. pcLabelPostMapper.insert(labelModel);
  241. });
  242. }
  243. return result;
  244. }
  245. @Override
  246. public int delete(List<String> ids) {
  247. int result = 0;
  248. PcPostExample postExp = new PcPostExample();
  249. postExp.or().andPostIDIn(ids);
  250. result = pcPostMapper.deleteByExample(postExp);
  251. if (result > 0) {
  252. PcLabelPostExample labelEmp = new PcLabelPostExample();
  253. labelEmp.or().andPostIDIn(ids);
  254. pcLabelPostMapper.deleteByExample(labelEmp);
  255. }
  256. return result;
  257. }
  258. @Override
  259. public int deletePostAndRecommendMgt(String id) {
  260. try {
  261. PcRecommendMgtExample exp = new PcRecommendMgtExample();
  262. PcRecommendMgtExample.Criteria cro = exp.or();
  263. cro.andPostIDEqualTo(id);
  264. pcRecommendMgtMapper.deleteByExample(exp);
  265. PcLabelPostExample labelEmp = new PcLabelPostExample();
  266. labelEmp.or().andPostIDEqualTo(id);
  267. pcLabelPostMapper.deleteByExample(labelEmp);
  268. return pcPostMapper.deleteByPrimaryKey(id);
  269. } catch (Exception e) {
  270. e.printStackTrace();
  271. return 0;
  272. }
  273. }
  274. @Override
  275. public PostVo getDataById(String id) {
  276. if (stringUtils.IsNullOrEmpty(id)) {
  277. return null;
  278. }
  279. PostVo data = postCQuery.selectPostList(stringUtils.ListToInSql(Arrays.asList(id)), null, null, null, null, null, null, null, null, null, null).stream().findFirst().orElse(null);
  280. if (data != null) {
  281. data.listLabel = labelCQuery.getPostLabelList(id);
  282. }
  283. return data;
  284. }
  285. @Override
  286. public List<PostVo> getDataListByCompanyID(String companyId) {
  287. List<PostVo> resultList = new ArrayList<>();
  288. PcPostExample postExp = new PcPostExample();
  289. postExp.or().andCompanyIDEqualTo(companyId);
  290. var postList = pcPostMapper.selectByExample(postExp);
  291. for (PcPost curPost : postList) {
  292. PostVo item = new PostVo();
  293. item.setPostID(curPost.getPostID());
  294. item.setProfessionID(curPost.getProfessionID());
  295. PcProfessionExample professionExp = new PcProfessionExample();
  296. professionExp.or().andProfessionIDEqualTo(curPost.getProfessionID());
  297. var curProfession = pcProfessionMapper.selectByExample(professionExp).get(0);
  298. item.setProfessionName(curProfession.getProfessionName());
  299. item.setCompanyID(curPost.getCompanyID());
  300. item.setRecruitCount(curPost.getRecruitCount());
  301. item.setStartTime(curPost.getStartTime());
  302. item.setEndTime(curPost.getEndTime());
  303. resultList.add(item);
  304. }
  305. return resultList;
  306. }
  307. @Override
  308. public List<PostVo> importPost(List<PostVo> dataList, String userID) {
  309. if (dataList.size() <= 0)
  310. throw new BaseException("", "请添加导入数据!");
  311. //所属企业
  312. PcCompanyExample companyExp = new PcCompanyExample();
  313. companyExp.or().andRecordStatusEqualTo(1);
  314. List<PcCompany> companyList = companyMapper.selectByExample(companyExp);
  315. //岗位信息
  316. List<SysDictionaryItem> thirdLevelProfessionList = new ArrayList<>();
  317. PcProfessionExample professionExp = new PcProfessionExample();
  318. professionExp.or().andParentProfessionIDEqualTo("").andStatusEqualTo(1);
  319. var firstLevelData = pcProfessionMapper.selectByExample(professionExp);
  320. for (PcProfession curProfession : firstLevelData) {
  321. professionExp = new PcProfessionExample();
  322. professionExp.or().andParentProfessionIDEqualTo(curProfession.getProfessionID()).andStatusEqualTo(1);
  323. var secondLevelData = pcProfessionMapper.selectByExample(professionExp);
  324. for (PcProfession curParentProfession : secondLevelData) {
  325. professionExp = new PcProfessionExample();
  326. professionExp.or().andParentProfessionIDEqualTo(curParentProfession.getProfessionID()).andStatusEqualTo(1);
  327. var thirdLevelData = pcProfessionMapper.selectByExample(professionExp);
  328. for (PcProfession curItem : thirdLevelData) {
  329. SysDictionaryItem item = new SysDictionaryItem();
  330. item.setCode(curItem.getProfessionID());
  331. item.setName(curItem.getProfessionName());
  332. thirdLevelProfessionList.add(item);
  333. }
  334. }
  335. }
  336. // 工种信息
  337. List<SysDictionaryItem> WorkCategoryList = new ArrayList<>();
  338. // 获取第一级工种
  339. PcWorkcategoryExample workCategoryExample = new PcWorkcategoryExample();
  340. workCategoryExample.or().andParentWorkCategoryIDEqualTo("").andStatusEqualTo(1);
  341. List<PcWorkcategory> firstLevelWorkCategoryList = pcWorkcategoryMapper.selectByExample(workCategoryExample);
  342. for (PcWorkcategory pcWorkcategory : firstLevelWorkCategoryList) {
  343. // 获取第二级工种
  344. workCategoryExample = new PcWorkcategoryExample();
  345. workCategoryExample.or().andParentWorkCategoryIDEqualTo(pcWorkcategory.getWorkCategoryID()).andStatusEqualTo(1);
  346. List<PcWorkcategory> secondLevelWorkCategoryList = pcWorkcategoryMapper.selectByExample(workCategoryExample);
  347. for (PcWorkcategory workCategory : secondLevelWorkCategoryList) {
  348. // 获取第三级工种
  349. workCategoryExample = new PcWorkcategoryExample();
  350. workCategoryExample.or().andParentWorkCategoryIDEqualTo(workCategory.getWorkCategoryID()).andStatusEqualTo(1);
  351. List<PcWorkcategory> thirdLevelWorkCategoryList = pcWorkcategoryMapper.selectByExample(workCategoryExample);
  352. for (PcWorkcategory pcWorkCategory1 : thirdLevelWorkCategoryList) {
  353. SysDictionaryItem item = new SysDictionaryItem();
  354. item.setCode(pcWorkCategory1.getWorkCategoryID());
  355. item.setName(pcWorkCategory1.getWorkCategoryName());
  356. WorkCategoryList.add(item);
  357. }
  358. }
  359. }
  360. //文化程度
  361. List<SysDictionaryItem> dicCultureDataList = dictionaryService.getDictionaryItemList("CultureLevel");
  362. // 工作年限
  363. List<SysDictionaryItem> dicWorkYearDataList = dictionaryService.getDictionaryItemList("WorkYearType");
  364. List<PostVo> resultList = new ArrayList<>();
  365. dataList.forEach(item -> {
  366. String errorInfo = "";
  367. item.setPostID(UUID.randomUUID().toString());
  368. item.setRecordStatus(1);
  369. if (stringUtils.IsNullOrEmpty(item.companyName))
  370. errorInfo += "请填写企业名称!";
  371. else {
  372. item.companyID = companyList.stream().filter(it -> it.getCompanyName().equals(item.getCompanyName().trim()))
  373. .findFirst().orElse(new PcCompany()).getCompanyID();
  374. if (item.companyID == null)
  375. errorInfo += "企业不存在!";
  376. }
  377. if (stringUtils.IsNullOrEmpty(item.professionName))
  378. errorInfo += "请填写岗位名称!";
  379. else {
  380. item.professionID = thirdLevelProfessionList.stream().filter(it -> it.getName().equals(item.getProfessionName().trim()))
  381. .findFirst().orElse(new SysDictionaryItem()).getCode();
  382. if (item.professionID == null || item.professionID == "")
  383. errorInfo += "岗位不存在!";
  384. }
  385. if (stringUtils.IsNullOrEmpty(item.getWorkCategoryName())) {
  386. errorInfo += "请填写工种名称";
  387. } else {
  388. item.workCode = WorkCategoryList.stream().filter(it -> it.getName().equals(item.getWorkCategoryName().trim()))
  389. .findFirst().orElse(new SysDictionaryItem()).getCode();
  390. if (item.workCode == null || item.workCode == "") {
  391. errorInfo += "工种不存在!";
  392. }
  393. }
  394. if (stringUtils.IsNullOrEmpty(String.valueOf(item.recruitCount)) || item.recruitCount == null)
  395. errorInfo += "请填写招聘人数!";
  396. if (stringUtils.IsNullOrEmpty(String.valueOf(item.startTime)) || item.startTime == null)
  397. errorInfo += "请填写开始日期!";
  398. if (stringUtils.IsNullOrEmpty(String.valueOf(item.startTime)) || item.startTime == null)
  399. errorInfo += "请填写结束日期!";
  400. if (stringUtils.IsNullOrEmpty(item.jobPlace))
  401. errorInfo += "请填写工作地点!";
  402. if (!stringUtils.IsNullOrEmpty(item.getWorkYearName())) {
  403. item.workYear = dicWorkYearDataList.stream().filter(it -> it.getName().equals(item.getWorkYearName().trim()))
  404. .findFirst().orElse(new SysDictionaryItem()).getValue();
  405. if (item.workYear == null)
  406. errorInfo += "工作年限不存在!";
  407. }
  408. if (item.isTrailName.trim().equals("是")) item.isTrail = true;
  409. else if (item.isTrailName.trim().equals("否")) item.isTrail = false;
  410. if (!stringUtils.IsNullOrEmpty(item.cultureLevelName)) {
  411. item.cultureRank = dicCultureDataList.stream().filter(it -> it.getName().equals(item.cultureLevelName.trim()))
  412. .findFirst().orElse(new SysDictionaryItem()).getValue();
  413. if (item.cultureRank == null || item.cultureRank == 0)
  414. errorInfo += "输入的学历要求不存在!";
  415. }
  416. if (stringUtils.IsNullOrEmpty(errorInfo)) {
  417. resultList.add(item);
  418. } else {
  419. item.setErrorMessage(errorInfo);
  420. }
  421. });
  422. if (dataList.stream().filter(it -> !stringUtils.IsNullOrEmpty(it.errorMessage)).collect(Collectors.toList()).size() > 0)
  423. return dataList;
  424. resultList.forEach(item -> {
  425. save(item, userID);
  426. });
  427. return null;
  428. }
  429. }