PostServiceImpl.java 19 KB

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