diff --git a/WEB-INF/prop/jclRecruit.properties b/WEB-INF/prop/jclRecruit.properties index fa55357..228622c 100644 --- a/WEB-INF/prop/jclRecruit.properties +++ b/WEB-INF/prop/jclRecruit.properties @@ -1,8 +1,17 @@ -#\u805A\u624D\u6797\u62DB\u8058\u6D88\u606F\u63D0\u9192\uFF0C\u6D88\u606F\u6765\u6E90 +#############################\u975E\u6807\u5305\u57FA\u7840\u914D\u7F6E\u76F8\u5173\u914D\u7F6E############################## +defaultCloseNonStandard163=true + +#############################\u670D\u52A1\u5668\u76F8\u5173\u4FE1\u606F############################## +#\u5916\u7F51\u6620\u5C04\u5730\u5740 +#HTTP_URL=http://221.226.25.34:8086 +HTTP_URL=http://127.0.0.1:8089 + +#############################\u6D88\u606F\u63D0\u9192\u76F8\u5173\u914D\u7F6E############################## +#\u805A\u624D\u6797\u9ED8\u8BA4\u62DB\u8058\u6D88\u606F\u63D0\u9192\uFF0C\u6D88\u606F\u6765\u6E90(\u6D88\u606F\u6765\u6E90ID\u83B7\u53D6\u65B9\u5F0F\uFF1A==\u300B\u5E94\u7528\u4E2D\u5FC3-\u6D88\u606F\u4E2D\u5FC3-\u6D88\u606F\u7C7B\u578B\u8BBE\u7F6E>>>>\u6D88\u606F\u6765\u6E90-\u5217\u4E2D\u5B57\u6BB5\u4E2D\u7684\u7ED1\u5B9A\u6807\u8BC6) RECRUIT_MESSAGE_TYPE=2022061063 -#\u9762\u8BD5\u76F8\u5173\u6D88\u606F\u63D0\u9192\uFF0C\u6D88\u606F\u6765\u6E90 +#\u9762\u8BD5\u53CD\u9988\u6D88\u606F\u63D0\u9192\uFF0C\u6D88\u606F\u6765\u6E90 INTERVIEW_MESSAGE_TYPE=2022061063 #\u6DFB\u52A0\u9762\u8BD5\u6D88\u606F\u63D0\u9192\u6807\u9898 INTERVIEW_ADD_MESSAGE_TITLE=\u9762\u8BD5\u5B89\u6392\u63D0\u9192 @@ -16,9 +25,43 @@ INTERVIEW_EVALUATE_MESSAGE_TITLE=\u9762\u8BD5\u8BC4\u4EF7\u63D0\u9192 JOIN_BLACKLIST_MESSAGE_TITLE=\u4EBA\u624D\u9ED1\u540D\u5355\u901A\u77E5 #\u7B5B\u9009\u53CD\u9988 +#\u7B5B\u9009\u53CD\u9988\u6D88\u606F\u63D0\u9192\uFF0C\u6D88\u606F\u6765\u6E90 SCREENING_MESSAGE_TYPE=2022061063 +#\u7B5B\u9009\u53CD\u9988\uFF0C\u6D88\u606F\u63D0\u9192\u6807\u9898 SCREENING_MESSAGE_TITLE=\u7B80\u5386\u7B5B\u9009 -SCREENING_MESSAGE_URL=/wui/index.html#/main/cube/search?customid=65 +#\u7B5B\u9009\u53CD\u9988\uFF0C\u6D88\u606F\u63D0\u9192\u94FE\u63A5\u5730\u5740(\u9700\u66FF\u6362\u4E0B\u9762\u94FE\u63A5\u5730\u5740\u7684ID\uFF0CID\u83B7\u53D6\u65B9\u5F0F\uFF1A==\u300B\u5EFA\u6A21\u5F15\u64CE-\u5E94\u7528\u5EFA\u6A21-\u67E5\u8BE2>>>>\u805A\u624D\u6797\u62DB\u8058\u7BA1\u7406-\u5E94\u8058\u8005\u7B80\u5386-\u7B5B\u9009\u53CD\u9988) +SCREENING_MESSAGE_URL=/wui/index.html#/main/cube/search?customid=64 -#\u5E94\u8058\u8005\u7B80\u5386\u5B58\u653E\u76EE\u5F55ID -APPLICANTS_RESUMES_CATEGORY=110 \ No newline at end of file + +#############################\u79FB\u52A8\u5EFA\u6A21\u76F8\u5173\u914D\u7F6E############################## +#\u914D\u7F6E\u83B7\u53D6\u8DEF\u5F84\uFF1A\u79FB\u52A8\u5F15\u64CE-\u5E94\u7528\u5EFA\u6A21-\u5E94\u7528 +#APPID\u83B7\u53D6\u65B9\u5F0F\uFF1A\u9009\u62E9\u5BF9\u5E94\u7684\u5E94\u7528\uFF0C\u9875\u9762\u5373\u5C55\u793A\u5BF9\u5E94ID +#\u79FB\u52A8\u5EFA\u6A21\u5730\u5740\u83B7\u53D6\u65B9\u5F0F\uFF1A\u9009\u62E9\u5BF9\u5E94\u7684\u5E94\u7528\uFF0C\u9F20\u6807\u53F3\u952E>>\u514D\u767B\u9646\u8BBF\u95EE\u8BBE\u7F6E\uFF0C\u5373\u53EF\u590D\u5236\u5E94\u7528\u8BBF\u95EE\u5730\u5740 + +#\u4FE1\u606F\u91C7\u96C6\u79FB\u52A8\u5EFA\u6A21APPID +MOBILE_APPID_COLLECT=3 +#\u4FE1\u606F\u91C7\u96C6\u79FB\u52A8\u5EFA\u6A21\u5730\u5740 +COLLECT_MESSAGE_LINK=http://ip:port/mobilemode/mobile/view.html?appid=3&mTokenFrom=anonymous&mToken=6B56BDC3C4233A984BA4BCE626FD44CF + +#offer\u79FB\u52A8\u5EFA\u6A21APPID +MOBILE_APPID_OFFER=2 +#offer\u53CD\u9988\u79FB\u52A8\u5EFA\u6A21\u5730\u5740 +OFFER_MOBILE_URL=http://ip:port/mobilemode/mobile/view.html?appid=2&mTokenFrom=anonymous&mToken=C13059E5D6B68D0F23BC30B80E440C42 + + +#############################\u6587\u6863\u76EE\u5F55\u76F8\u5173\u914D\u7F6E############################## +#\u539F\u59CB\u7B80\u5386\u9644\u4EF6\u76EE\u5F55ID\uFF08\u540E\u7AEF\u5F15\u64CE-\u5185\u5BB9\u5F15\u64CE-\u76EE\u5F55\u8BBE\u7F6E-\u6587\u6863\u76EE\u5F55>>>>\u62DB\u8058-\u539F\u59CB\u7B80\u5386\u9644\u4EF6\uFF09 +APPLICANTS_RESUMES_CATEGORY=110 + + +#############################\u5E94\u8058\u8005\u5361\u7247\u7B80\u5386\u8BC6\u522B\u914D\u7F6E############################## +#\u5E94\u8058\u8005\u5361\u7247\uFF0C\u7B80\u5386\u8BC6\u522B\u5B9E\u73B0\u7C7B\uFF0C\u5982\u672A\u8D2D\u4E70OCR\u670D\u52A1\uFF0C\u65E0\u9700\u914D\u7F6E +#\u5343\u91CC\u8046\u5B9E\u73B0\u7C7B\uFF1Acom.engine.recruit.service.impl.ResumeRecognitionServiceImpl +OCR_TYPE=com.engine.recruit.service.impl.ResumeRecognitionServiceImpl + +#\u7B80\u5386\u667A\u80FD\u62BD\u53D6\u670D\u52A1-\u5343\u91CC\u8046\u5730\u5740 +qianlilingurl=https://open.easst.cn/openapi/rest/resume +#appid +appId=84th31r9 +#appSecret +appSecret=b43c83ea6f2169f2fd20e691bcdfa6f6 \ No newline at end of file diff --git a/src/com/engine/recruit/constant/RecruitConstant.java b/src/com/engine/recruit/constant/RecruitConstant.java new file mode 100644 index 0000000..3853a6c --- /dev/null +++ b/src/com/engine/recruit/constant/RecruitConstant.java @@ -0,0 +1,101 @@ +package com.engine.recruit.constant; + +import com.engine.recruit.exception.CustomizeRunTimeException; +import weaver.general.BaseBean; + +import java.net.URL; +import java.nio.charset.StandardCharsets; + +/** + * @author:dxfeng + * @createTime: 2024/01/17 + * @version: 1.0 + */ +public class RecruitConstant { + /** + * URL分隔符 + */ + private static final String URL_SPLIT = "/"; + + + public static final String HTTP_URL; + public static final String RECRUIT_MESSAGE_TYPE; + public static final String INTERVIEW_MESSAGE_TYPE; + public static final String INTERVIEW_ADD_MESSAGE_TITLE; + public static final String INTERVIEW_CANCEL_MESSAGE_TITLE; + public static final String INTERVIEW_EVALUATE_MESSAGE_TITLE; + public static final String JOIN_BLACKLIST_MESSAGE_TITLE; + public static final String SCREENING_MESSAGE_TYPE; + public static final String SCREENING_MESSAGE_TITLE; + public static final String SCREENING_MESSAGE_URL; + public static final String MOBILE_APPID_COLLECT; + public static final String COLLECT_MESSAGE_LINK; + public static final String MOBILE_APPID_OFFER; + public static final String OFFER_MOBILE_URL; + public static final String APPLICANTS_RESUMES_CATEGORY; + public static final String OCR_TYPE; + public static final String OCR_URL; + public static final String APP_ID; + public static final String APP_SECRET; + + static BaseBean baseBean = new BaseBean(); + + static { + + HTTP_URL = getRecruitPropValue("HTTP_URL"); + RECRUIT_MESSAGE_TYPE = getRecruitPropValue("RECRUIT_MESSAGE_TYPE"); + INTERVIEW_MESSAGE_TYPE = getRecruitPropValue("INTERVIEW_MESSAGE_TYPE"); + INTERVIEW_ADD_MESSAGE_TITLE = getRecruitPropValue("INTERVIEW_ADD_MESSAGE_TITLE"); + INTERVIEW_CANCEL_MESSAGE_TITLE = getRecruitPropValue("INTERVIEW_CANCEL_MESSAGE_TITLE"); + INTERVIEW_EVALUATE_MESSAGE_TITLE = getRecruitPropValue("INTERVIEW_EVALUATE_MESSAGE_TITLE"); + JOIN_BLACKLIST_MESSAGE_TITLE = getRecruitPropValue("JOIN_BLACKLIST_MESSAGE_TITLE"); + SCREENING_MESSAGE_TYPE = getRecruitPropValue("SCREENING_MESSAGE_TYPE"); + SCREENING_MESSAGE_TITLE = getRecruitPropValue("SCREENING_MESSAGE_TITLE"); + SCREENING_MESSAGE_URL = getCompleteUrl(getRecruitPropValue("SCREENING_MESSAGE_URL")); + MOBILE_APPID_COLLECT = getRecruitPropValue("MOBILE_APPID_COLLECT"); + COLLECT_MESSAGE_LINK = getRecruitPropValue("COLLECT_MESSAGE_LINK"); + MOBILE_APPID_OFFER = getRecruitPropValue("MOBILE_APPID_OFFER"); + OFFER_MOBILE_URL = getCompleteUrl(getRecruitPropValue("OFFER_MOBILE_URL")); + APPLICANTS_RESUMES_CATEGORY = getRecruitPropValue("APPLICANTS_RESUMES_CATEGORY"); + + // OCR相关 + OCR_TYPE = getRecruitPropValue("OCR_TYPE"); + OCR_URL = getRecruitPropValue("OCR_URL"); + APP_ID = getRecruitPropValue("APP_ID"); + APP_SECRET = getRecruitPropValue("APP_SECRET"); + } + + public static String getRecruitPropValue(String key) { + String value = baseBean.getPropValue("jclRecruit", key); + value = new String(value.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); + return value; + } + + + /** + * 对外发布的URL地址,处理域名 + * + * @param url + * @return + */ + private static String getCompleteUrl(String url) { + try { + URL u = new URL(url); + // 如果URL对象的getHost()方法获取到了域名,则直接返回原始URL + if (u.getHost() != null) { + return url; + } else { + // 否则,判断URL是否以"/"开头,如果是则在它前面拼接上域名 + if (url.startsWith(URL_SPLIT)) { + return HTTP_URL + url; + } else { + // 如果URL既不是完整URL也不是以"/"开头,则在URL开头添加"/",再拼接上域名 + return HTTP_URL + URL_SPLIT + url; + } + } + } catch (Exception e) { + throw new CustomizeRunTimeException(e); + } + } + +} diff --git a/src/com/engine/recruit/entity/resume/QllResumePo.java b/src/com/engine/recruit/entity/resume/QllResumePo.java index a925cbf..a80d25a 100644 --- a/src/com/engine/recruit/entity/resume/QllResumePo.java +++ b/src/com/engine/recruit/entity/resume/QllResumePo.java @@ -9,6 +9,7 @@ import com.alibaba.fastjson.JSONObject; import com.engine.recruit.conn.CheckRepeatResume; import com.engine.recruit.conn.ModeBrowserCommonInfo; import com.engine.recruit.conn.RecruitDataMap; +import com.engine.recruit.constant.RecruitConstant; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -32,7 +33,6 @@ import java.util.List; @NoArgsConstructor @Builder public class QllResumePo { - private static final int SEC_CATEGORY = Convert.toInt(RecruitModeUtil.getRecruitPropValue("APPLICANTS_RESUMES_CATEGORY")); private String id; private String xm; @@ -69,28 +69,29 @@ public class QllResumePo { return null; } String resumeId = null; + BaseBean baseBean = new BaseBean(); try { JSONArray jsonArray = JSON.parseArray(jlfj); JSONObject jsonObject = (JSONObject) jsonArray.get(0); String name = jsonObject.getString("name"); String content = jsonObject.getString("content"); - new BaseBean().writeLog("千里聆简历附件解析,id=" + id + ",jslf=" + jlfj); + baseBean.writeLog("千里聆简历附件解析,id=" + id + ",jslf=" + jlfj); HttpResponse response = HttpRequest.get(content).execute(); if (response.isOk()) { String disposition = response.header("Content-Disposition"); if (StringUtils.isNotBlank(disposition)) { InputStream inputStream = response.bodyStream(); int imageFileId = RecruitModeUtil.generateImageFileId(inputStream, name); - int docId = RecruitModeUtil.createDocId(SEC_CATEGORY, imageFileId, new User(1)); + int docId = RecruitModeUtil.createDocId(Convert.toInt(RecruitConstant.APPLICANTS_RESUMES_CATEGORY), imageFileId, new User(1)); resumeId = String.valueOf(docId); } else { - new BaseBean().writeLog("千里聆附件下载失败,Content-Disposition为空===" + response.body()); + baseBean.writeLog("千里聆附件下载失败" + response.body()); } } else { - new BaseBean().writeLog("千里聆附件下载失败,URL响应失败"); + baseBean.writeLog("千里聆附件下载失败,URL响应失败"); } } catch (Exception e) { - new BaseBean().writeLog("千里聆附件下载失败", e); + baseBean.writeLog("千里聆附件下载失败", e); } return resumeId; } diff --git a/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java b/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java index f1f39e1..1000708 100644 --- a/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java +++ b/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java @@ -3,6 +3,7 @@ package com.engine.recruit.service.impl; import cn.hutool.core.convert.Convert; import com.engine.core.impl.Service; import com.engine.recruit.conn.*; +import com.engine.recruit.constant.RecruitConstant; import com.engine.recruit.entity.record.ApplicantRecordPo; import com.engine.recruit.entity.resume.OcrResumePo; import com.engine.recruit.enums.ApplicantOperateEnum; @@ -310,7 +311,7 @@ public class ApplicantResumeServiceImpl extends Service implements ApplicantResu int imageFileId = Convert.toInt(params.get("imageFileId")); int resumeId = Convert.toInt(params.get("resumeId")); - int secCategory = Convert.toInt(RecruitModeUtil.getRecruitPropValue("APPLICANTS_RESUMES_CATEGORY")); + int secCategory = Convert.toInt(RecruitConstant.APPLICANTS_RESUMES_CATEGORY); RecordSet rs = new RecordSet(); try { int docId = RecruitModeUtil.createDocId(secCategory, imageFileId, user); diff --git a/src/com/engine/recruit/service/impl/InductionManageServiceImpl.java b/src/com/engine/recruit/service/impl/InductionManageServiceImpl.java index 8838685..f8b76b0 100644 --- a/src/com/engine/recruit/service/impl/InductionManageServiceImpl.java +++ b/src/com/engine/recruit/service/impl/InductionManageServiceImpl.java @@ -4,6 +4,7 @@ import com.engine.core.impl.Service; import com.engine.recruit.conn.ApplicantCommonInfo; import com.engine.recruit.conn.RecruitDataMap; import com.engine.recruit.conn.RecruitRecordSet; +import com.engine.recruit.constant.RecruitConstant; import com.engine.recruit.entity.record.ApplicantRecordPo; import com.engine.recruit.enums.EntryStatusEnum; import com.engine.recruit.enums.InfoCollectEnum; @@ -28,7 +29,6 @@ import java.util.stream.Collectors; * @version: 1.0 */ public class InductionManageServiceImpl extends Service implements InductionManageService { - private static final String MOBILE_APPID_COLLECT = RecruitModeUtil.getRecruitPropValue("MOBILE_APPID_COLLECT"); @Override public Map updateInductionManageInfo(Map param) { @@ -47,11 +47,11 @@ public class InductionManageServiceImpl extends Service implements InductionMana public Map sendCollectInfo(Map param) { String ids = Util.null2String(param.get("ids")); String[] split = ids.split(","); - if (StringUtils.isBlank(MOBILE_APPID_COLLECT)) { + if (StringUtils.isBlank(RecruitConstant.MOBILE_APPID_COLLECT)) { throw new CustomizeRunTimeException("未获取到对应移动建模ID,请检查配置文件"); } RecordSet rs = new RecordSet(); - rs.executeQuery("select noLoginUser from mobileappbaseinfo where id = ?", MOBILE_APPID_COLLECT); + rs.executeQuery("select noLoginUser from mobileappbaseinfo where id = ?", RecruitConstant.MOBILE_APPID_COLLECT); int creator = -1; if (rs.next()) { creator = rs.getInt("noLoginUser"); @@ -127,7 +127,7 @@ public class InductionManageServiceImpl extends Service implements InductionMana String mobile = Util.null2String(dataMap.get("sjh")); String email = Util.null2String(dataMap.get("yx")); - String messageLink = RecruitModeUtil.HTTP_URL + RecruitModeUtil.getRecruitPropValue("COLLECT_MESSAGE_LINK"); + String messageLink = RecruitConstant.COLLECT_MESSAGE_LINK; //messageLink += "&billId=" + id; yjnr = yjnr.replace("{链接地址}", messageLink); diff --git a/src/com/engine/recruit/service/impl/JoinBlacklistServiceImpl.java b/src/com/engine/recruit/service/impl/JoinBlacklistServiceImpl.java index 76ec917..99d29d1 100644 --- a/src/com/engine/recruit/service/impl/JoinBlacklistServiceImpl.java +++ b/src/com/engine/recruit/service/impl/JoinBlacklistServiceImpl.java @@ -2,13 +2,14 @@ package com.engine.recruit.service.impl; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.recruit.conn.ApplicantCommonInfo; +import com.engine.recruit.constant.RecruitConstant; import com.engine.recruit.entity.record.ApplicantRecordPo; import com.engine.recruit.enums.ApplicationStatusEnum; import com.engine.recruit.enums.RecordOperateEnum; import com.engine.recruit.service.RecruitButtonService; import weaver.common.DateUtil; import weaver.conn.RecordSet; -import com.engine.recruit.conn.ApplicantCommonInfo; import weaver.formmode.recruit.modeexpand.util.RecruitModeUtil; import weaver.general.Util; @@ -57,8 +58,8 @@ public class JoinBlacklistServiceImpl extends Service implements RecruitButtonSe recordPo.execute(); // 消息提醒当前人员简历的跟进者(应聘职位的负责人/协助人) - String messageType = RecruitModeUtil.getRecruitPropValue("RECRUIT_MESSAGE_TYPE"); - String messageTitle = RecruitModeUtil.getRecruitPropValue("JOIN_BLACKLIST_MESSAGE_TITLE"); + String messageType = RecruitConstant.RECRUIT_MESSAGE_TYPE; + String messageTitle = RecruitConstant.JOIN_BLACKLIST_MESSAGE_TITLE; String applicantName = ApplicantCommonInfo.getApplicantName(billId); String operatorName = RecruitModeUtil.getResourceNames(String.valueOf(user.getUID())); String messageContent = "应聘者:【" + applicantName + "】,已被【" + operatorName + "】加入黑名单,相关投递已自动淘汰,请知悉。"; diff --git a/src/com/engine/recruit/service/impl/ResumeRecognitionServiceImpl.java b/src/com/engine/recruit/service/impl/ResumeRecognitionServiceImpl.java index 419f47a..59fea19 100644 --- a/src/com/engine/recruit/service/impl/ResumeRecognitionServiceImpl.java +++ b/src/com/engine/recruit/service/impl/ResumeRecognitionServiceImpl.java @@ -4,10 +4,8 @@ import cn.hutool.core.convert.Convert; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.engine.core.impl.Service; -import com.engine.recruit.conn.ApplicantCommonInfo; -import com.engine.recruit.conn.CheckRepeatResume; -import com.engine.recruit.conn.ModeBrowserCommonInfo; -import com.engine.recruit.conn.RecruitRecordSet; +import com.engine.recruit.conn.*; +import com.engine.recruit.constant.RecruitConstant; import com.engine.recruit.enums.ApplicationStatusEnum; import com.engine.recruit.exception.CustomizeRunTimeException; import com.engine.recruit.service.ResumeRecognitionService; @@ -25,13 +23,13 @@ import org.apache.http.util.EntityUtils; import weaver.conn.RecordSet; import weaver.file.ImageFileManager; import weaver.formmode.recruit.modeexpand.util.RecruitModeUtil; +import weaver.general.BaseBean; import weaver.general.Util; import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.text.DateFormat; -import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import java.util.function.Function; @@ -66,15 +64,15 @@ public class ResumeRecognitionServiceImpl extends Service implements ResumeRecog qllResumeUpload(Convert.toInt(resumeId), uploadDataMap, false); Map resumeData = (Map) uploadDataMap.get("data"); // 添加原始附件字段信息 - int secCategory = Convert.toInt(RecruitModeUtil.getRecruitPropValue("APPLICANTS_RESUMES_CATEGORY")); + int secCategory = Convert.toInt(RecruitConstant.APPLICANTS_RESUMES_CATEGORY); try { int docId = RecruitModeUtil.createDocId(secCategory, Convert.toInt(resumeId), user); resumeData.put("ysjl", docId); } catch (Exception e) { throw new RuntimeException(e); } - List> studyList = (List>) resumeData.remove("jyjl"); - List> workList = (List>) resumeData.remove("gzjl"); + List> studyList = (List>) resumeData.remove("jyjl"); + List> workList = (List>) resumeData.remove("gzjl"); // 状态 resumeData.put("zt", ApplicationStatusEnum.DISTRIBUTION.getValue()); @@ -87,28 +85,15 @@ public class ResumeRecognitionServiceImpl extends Service implements ResumeRecog // 判断简历信息 - Map map = CheckRepeatResume.getInstance().insertResumeAndReturn(resumeData); + CheckRepeatResume instance = CheckRepeatResume.getInstance(); + Map map = instance.insertResumeAndReturn(resumeData); String mainId = Util.null2String(map.get("mainId")); String sourceId = Util.null2String(map.get("sourceId")); returnMap.put("mainId", mainId); returnMap.put("sourceId", sourceId); returnMap.put("id", StringUtils.isNotBlank(sourceId) ? sourceId : mainId); - - // 插入明细表数据 - if (CollectionUtils.isNotEmpty(studyList)) { - for (Map studMap : studyList) { - studMap.put("mainid", mainId); - RecruitRecordSet.insertData(studMap, "uf_jcl_yppc_dt1"); - } - } - - if (CollectionUtils.isNotEmpty(workList)) { - for (Map workMap : workList) { - workMap.put("mainid", mainId); - RecruitRecordSet.insertData(workMap, "uf_jcl_yppc_dt2"); - } - } - + instance.insertResumeDetailTable(studyList, "uf_jcl_yppc_dt1", mainId, sourceId); + instance.insertResumeDetailTable(workList, "uf_jcl_yppc_dt2", mainId, sourceId); return returnMap; } @@ -235,12 +220,13 @@ public class ResumeRecognitionServiceImpl extends Service implements ResumeRecog // 明细表数据 // 教育经历 JSONArray jyjl = obj.getJSONArray("学业信息"); - List> studyList = new ArrayList<>(); + List> studyList = new ArrayList<>(); if (null != jyjl && jyjl.size() > 0) { for (int i = 0; i < jyjl.size(); i++) { JSONObject o = (JSONObject) jyjl.get(i); String studyDate = o.getString("就读时期"); - Map studyMap = new HashMap<>(getDateRange(studyDate, true)); + RecruitDataMap studyMap = new RecruitDataMap<>(); + studyMap.putAll(getDateRange(studyDate, true)); studyMap.put("xxmc", o.getString("院校")); List> xl = getBrowserArray(o.getString("学历"), this::getEducationLevelArray); studyMap.put("xl", xl); @@ -255,12 +241,13 @@ public class ResumeRecognitionServiceImpl extends Service implements ResumeRecog // 工作经历 JSONArray gzjl = obj.getJSONArray("工作信息"); - List> workList = new ArrayList<>(); + List> workList = new ArrayList<>(); if (null != gzjl && gzjl.size() > 0) { for (int i = 0; i < gzjl.size(); i++) { JSONObject o = (JSONObject) gzjl.get(i); String workDate = o.getString("工作时间"); - Map workMap = new HashMap<>(getDateRange(workDate, false)); + RecruitDataMap workMap = new RecruitDataMap<>(); + workMap.putAll(getDateRange(workDate, false)); workMap.put("gsmc", o.getString("工作单位")); workMap.put("gw", o.getString("工作岗位")); workMap.put("gzzz", o.getString("工作内容")); @@ -299,9 +286,9 @@ public class ResumeRecognitionServiceImpl extends Service implements ResumeRecog * @return */ private String doQllPost(int resumeId) { - String url = RecruitModeUtil.getRecruitPropValue("qianlilingurl"); - String appId = RecruitModeUtil.getRecruitPropValue("appId"); - String appSecret = RecruitModeUtil.getRecruitPropValue("appSecret"); + String url = RecruitConstant.OCR_URL; + String appId = RecruitConstant.APP_ID; + String appSecret = RecruitConstant.APP_SECRET; if (StringUtils.isAnyBlank(url, appId, appSecret)) { throw new CustomizeRunTimeException("千里聆配置出错,请检查配置文件"); } @@ -389,12 +376,16 @@ public class ResumeRecognitionServiceImpl extends Service implements ResumeRecog * @return */ private String parseDateObject(String value) { + if (StringUtils.isBlank(value)) { + return null; + } DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); sdf.setLenient(false); try { sdf.parse(value); - } catch (ParseException e) { - value = ""; + } catch (Exception e) { + new BaseBean().writeLog("日期格式化失败", e); + value = null; } return value; } @@ -405,8 +396,8 @@ public class ResumeRecognitionServiceImpl extends Service implements ResumeRecog * @param date * @return */ - private Map getDateRange(String date, boolean isStudy) { - Map dataRangeMap = new HashMap<>(2); + private RecruitDataMap getDateRange(String date, boolean isStudy) { + RecruitDataMap dataRangeMap = new RecruitDataMap<>(); String[] split = date.split("-"); if (split.length == 2) { String start = getFormatDate(split[0]); diff --git a/src/com/engine/recruit/thread/SdkResumeSavedThread.java b/src/com/engine/recruit/thread/SdkResumeSavedThread.java index 1742f0a..4331a5f 100644 --- a/src/com/engine/recruit/thread/SdkResumeSavedThread.java +++ b/src/com/engine/recruit/thread/SdkResumeSavedThread.java @@ -6,6 +6,7 @@ import com.engine.recruit.conn.ApplicantCommonInfo; import com.engine.recruit.conn.CheckRepeatResume; import com.engine.recruit.conn.PositionCommonInfo; import com.engine.recruit.conn.RecruitDataMap; +import com.engine.recruit.constant.RecruitConstant; import com.engine.recruit.enums.ApplicationStatusEnum; import com.engine.recruit.enums.CommonBrowserTypeEnum; import com.engine.recruit.enums.HighestDegreeEnum; @@ -35,7 +36,7 @@ import java.util.Map; public class SdkResumeSavedThread extends LocalRunnable { private ResumeMqMessage resumeMqMessage; - private static final int SEC_CATEGORY = Convert.toInt(RecruitModeUtil.getRecruitPropValue("APPLICANTS_RESUMES_CATEGORY")); + private static final int SEC_CATEGORY = Convert.toInt(RecruitConstant.APPLICANTS_RESUMES_CATEGORY); public SdkResumeSavedThread(ResumeMqMessage resumeMqMessage) { this.resumeMqMessage = resumeMqMessage; diff --git a/src/com/engine/recruit/wrapper/ResumeRecognitionWrapper.java b/src/com/engine/recruit/wrapper/ResumeRecognitionWrapper.java index e9d8c9b..77fe7c8 100644 --- a/src/com/engine/recruit/wrapper/ResumeRecognitionWrapper.java +++ b/src/com/engine/recruit/wrapper/ResumeRecognitionWrapper.java @@ -2,10 +2,10 @@ package com.engine.recruit.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.recruit.constant.RecruitConstant; import com.engine.recruit.factory.ResumeRecognitionFactory; import com.engine.recruit.service.ResumeRecognitionService; import org.apache.commons.lang3.StringUtils; -import weaver.formmode.recruit.modeexpand.util.RecruitModeUtil; import weaver.hrm.User; import java.util.Map; @@ -18,25 +18,25 @@ import java.util.Map; public class ResumeRecognitionWrapper extends Service { private ResumeRecognitionService getResumeRecognitionService(User user) { - return ServiceUtil.getService(ResumeRecognitionFactory.getClass(RecruitModeUtil.OCR_TYPE), user); + return ServiceUtil.getService(ResumeRecognitionFactory.getClass(RecruitConstant.OCR_TYPE), user); } public Map resumeUpload(Map param) { - if (StringUtils.isBlank(RecruitModeUtil.OCR_TYPE)) { + if (StringUtils.isBlank(RecruitConstant.OCR_TYPE)) { return null; } return getResumeRecognitionService(user).resumeUpload(param); } public Map importResume(Map param) { - if (StringUtils.isBlank(RecruitModeUtil.OCR_TYPE)) { + if (StringUtils.isBlank(RecruitConstant.OCR_TYPE)) { return null; } return getResumeRecognitionService(user).importResume(param); } public Map fetchResume(Map param) { - if (StringUtils.isBlank(RecruitModeUtil.OCR_TYPE)) { + if (StringUtils.isBlank(RecruitConstant.OCR_TYPE)) { return null; } return getResumeRecognitionService(user).fetchResume(param); diff --git a/src/weaver/formmode/recruit/modeexpand/departmentscreening/BatchAddDeptScreeningModeExpand.java b/src/weaver/formmode/recruit/modeexpand/departmentscreening/BatchAddDeptScreeningModeExpand.java index 9834c45..461593b 100644 --- a/src/weaver/formmode/recruit/modeexpand/departmentscreening/BatchAddDeptScreeningModeExpand.java +++ b/src/weaver/formmode/recruit/modeexpand/departmentscreening/BatchAddDeptScreeningModeExpand.java @@ -1,6 +1,7 @@ package weaver.formmode.recruit.modeexpand.departmentscreening; import com.engine.recruit.conn.ApplicantCommonInfo; +import com.engine.recruit.constant.RecruitConstant; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import weaver.common.DateUtil; @@ -97,9 +98,9 @@ public class BatchAddDeptScreeningModeExpand extends AbstractModeExpandJavaCodeN } // 发送待办消息 - String messageType = RecruitModeUtil.getRecruitPropValue("SCREENING_MESSAGE_TYPE"); - String messageTitle = RecruitModeUtil.getRecruitPropValue("SCREENING_MESSAGE_TITLE"); - String linkUrl = RecruitModeUtil.getRecruitPropValue("SCREENING_MESSAGE_URL"); + String messageType = RecruitConstant.SCREENING_MESSAGE_TYPE; + String messageTitle = RecruitConstant.SCREENING_MESSAGE_TITLE; + String linkUrl = RecruitConstant.SCREENING_MESSAGE_URL; String fkr = Util.null2String(mainDataMap.get("fkr")); Set userIdSet = new HashSet<>(Arrays.asList(fkr.split(","))); RecruitModeUtil.messagePush(messageType, messageTitle, msgBuilder.toString(), userIdSet, user.getUID(), linkUrl, ""); diff --git a/src/weaver/formmode/recruit/modeexpand/departmentscreening/SingleAddDeptScreeningModeExpand.java b/src/weaver/formmode/recruit/modeexpand/departmentscreening/SingleAddDeptScreeningModeExpand.java index 0869bc3..b21a353 100644 --- a/src/weaver/formmode/recruit/modeexpand/departmentscreening/SingleAddDeptScreeningModeExpand.java +++ b/src/weaver/formmode/recruit/modeexpand/departmentscreening/SingleAddDeptScreeningModeExpand.java @@ -1,11 +1,12 @@ package weaver.formmode.recruit.modeexpand.departmentscreening; +import com.engine.recruit.conn.ApplicantCommonInfo; +import com.engine.recruit.constant.RecruitConstant; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import weaver.common.DateUtil; import weaver.conn.RecordSet; import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew; -import com.engine.recruit.conn.ApplicantCommonInfo; import weaver.formmode.recruit.modeexpand.util.RecruitModeUtil; import weaver.formmode.setup.ModeRightInfo; import weaver.general.BaseBean; @@ -79,9 +80,9 @@ public class SingleAddDeptScreeningModeExpand extends AbstractModeExpandJavaCode } } // 发送待办消息 - String messageType = RecruitModeUtil.getRecruitPropValue("SCREENING_MESSAGE_TYPE"); - String messageTitle = RecruitModeUtil.getRecruitPropValue("SCREENING_MESSAGE_TITLE"); - String linkUrl = RecruitModeUtil.getRecruitPropValue("SCREENING_MESSAGE_URL"); + String messageType = RecruitConstant.SCREENING_MESSAGE_TYPE; + String messageTitle = RecruitConstant.SCREENING_MESSAGE_TITLE; + String linkUrl = RecruitConstant.SCREENING_MESSAGE_URL; String fkr = Util.null2String(dataMap.get("fkr")); String applicantName = ApplicantCommonInfo.getApplicantName(Util.null2String(dataMap.get("ypz"))); String applicantPosition = ApplicantCommonInfo.getApplicantPosition(Util.null2String(dataMap.get("ypzw"))); diff --git a/src/weaver/formmode/recruit/modeexpand/interview/BatchAddInterviewResultModeExpand.java b/src/weaver/formmode/recruit/modeexpand/interview/BatchAddInterviewResultModeExpand.java index 537a9bb..c9dfd27 100644 --- a/src/weaver/formmode/recruit/modeexpand/interview/BatchAddInterviewResultModeExpand.java +++ b/src/weaver/formmode/recruit/modeexpand/interview/BatchAddInterviewResultModeExpand.java @@ -1,5 +1,6 @@ package weaver.formmode.recruit.modeexpand.interview; +import com.engine.recruit.constant.RecruitConstant; import com.engine.recruit.util.RecruitMessageUtils; import com.weaver.formmodel.data.model.Formfield; import org.apache.commons.collections.CollectionUtils; @@ -28,21 +29,6 @@ import java.util.stream.Collectors; public class BatchAddInterviewResultModeExpand extends AbstractModeExpandJavaCodeNew { private static final String MODE_TABLE_NAME = "uf_jcl_ms"; - /** - * 消息来源ID - */ - private final String messageType; - - /** - * 消息提醒标题 - */ - private final String title; - - public BatchAddInterviewResultModeExpand() { - super(); - messageType = RecruitModeUtil.getRecruitPropValue("INTERVIEW_MESSAGE_TYPE"); - title = RecruitModeUtil.getRecruitPropValue("INTERVIEW_ADD_MESSAGE_TITLE"); - } @Override public Map doModeExpand(Map param) { @@ -132,7 +118,8 @@ public class BatchAddInterviewResultModeExpand extends AbstractModeExpandJavaCod String sjh = Util.null2String(detailDataMap.get("sjhm")); if (sendEmail) { if (needFeedback) { - String confirmUrl = RecruitModeUtil.HTTP_URL + "/spa/custom/static/index.html#/main/cs/app/9277c228302347dc88a958b69ee96234_Interview?uuid=" + uuid; + // TODO + String confirmUrl = RecruitConstant.HTTP_URL + "/spa/custom/static/index.html#/main/cs/app/9277c228302347dc88a958b69ee96234_Interview?uuid=" + uuid; String emailContent = "
请您答复是否参加此次邀请? 参加 不参加
"; // 邮件内容拼接确认信息 emailContent = msgContent + emailContent; @@ -162,7 +149,7 @@ public class BatchAddInterviewResultModeExpand extends AbstractModeExpandJavaCod Set userIdSet = new HashSet<>(); userIdSet.addAll(Arrays.asList(msg.split(","))); userIdSet.addAll(Arrays.asList(ptmsg.split(","))); - RecruitModeUtil.messagePush(messageType, title, msgBuilder.toString(), userIdSet, user.getUID()); + RecruitModeUtil.messagePush(RecruitConstant.INTERVIEW_MESSAGE_TYPE, RecruitConstant.INTERVIEW_ADD_MESSAGE_TITLE, msgBuilder.toString(), userIdSet, user.getUID()); } } } catch (Exception e) { diff --git a/src/weaver/formmode/recruit/modeexpand/interview/CreateInterviewModeExpand.java b/src/weaver/formmode/recruit/modeexpand/interview/CreateInterviewModeExpand.java index 0b9af7d..6c709f1 100644 --- a/src/weaver/formmode/recruit/modeexpand/interview/CreateInterviewModeExpand.java +++ b/src/weaver/formmode/recruit/modeexpand/interview/CreateInterviewModeExpand.java @@ -1,6 +1,7 @@ package weaver.formmode.recruit.modeexpand.interview; import com.engine.recruit.conn.ApplicantCommonInfo; +import com.engine.recruit.constant.RecruitConstant; import com.engine.recruit.enums.InterviewOperateTypeEnum; import com.engine.recruit.util.RecruitMessageUtils; import com.weaver.formmodel.data.model.Formfield; @@ -67,8 +68,8 @@ public class CreateInterviewModeExpand extends AbstractModeExpandJavaCodeNew { } InterviewOperateTypeEnum operateTypeEnum = InterviewOperateTypeEnum.getOperateType(operateType); if (operateTypeEnum == InterviewOperateTypeEnum.ARRANGE) { - messageType = RecruitModeUtil.getRecruitPropValue("INTERVIEW_MESSAGE_TYPE"); - title = RecruitModeUtil.getRecruitPropValue("INTERVIEW_ADD_MESSAGE_TITLE"); + messageType = RecruitConstant.INTERVIEW_MESSAGE_TYPE; + title = RecruitConstant.INTERVIEW_ADD_MESSAGE_TITLE; // 消息提醒 arrangeInterview(user, mainDataMap); @@ -94,7 +95,8 @@ public class CreateInterviewModeExpand extends AbstractModeExpandJavaCodeNew { if (rs.next()) { uuid = rs.getString("modeuuid"); } - String confirmUrl = RecruitModeUtil.HTTP_URL + "/spa/custom/static/index.html#/main/cs/app/9277c228302347dc88a958b69ee96234_Interview?uuid=" + uuid; + // TODO + String confirmUrl = RecruitConstant.HTTP_URL + "/spa/custom/static/index.html#/main/cs/app/9277c228302347dc88a958b69ee96234_Interview?uuid=" + uuid; String emailContent = "
请您答复是否参加此次邀请? 参加 不参加
"; // 邮件内容拼接确认信息 emailContent = msgContent + emailContent; diff --git a/src/weaver/formmode/recruit/modeexpand/interview/UpdateInterviewModeExpand.java b/src/weaver/formmode/recruit/modeexpand/interview/UpdateInterviewModeExpand.java index 51dddfd..82796fd 100644 --- a/src/weaver/formmode/recruit/modeexpand/interview/UpdateInterviewModeExpand.java +++ b/src/weaver/formmode/recruit/modeexpand/interview/UpdateInterviewModeExpand.java @@ -1,10 +1,11 @@ package weaver.formmode.recruit.modeexpand.interview; +import com.engine.recruit.conn.ApplicantCommonInfo; +import com.engine.recruit.constant.RecruitConstant; import com.engine.recruit.enums.InterviewOperateTypeEnum; import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew; -import com.engine.recruit.conn.ApplicantCommonInfo; import weaver.formmode.recruit.modeexpand.util.RecruitModeUtil; import weaver.general.Util; import weaver.hrm.User; @@ -63,14 +64,14 @@ public class UpdateInterviewModeExpand extends AbstractModeExpandJavaCodeNew { switch (operateTypeEnum) { case EVALUATE: // 面试评价 - messageType = RecruitModeUtil.getRecruitPropValue("INTERVIEW_MESSAGE_TYPE"); - title = RecruitModeUtil.getRecruitPropValue("INTERVIEW_EVALUATE_MESSAGE_TITLE"); + messageType = RecruitConstant.INTERVIEW_MESSAGE_TYPE; + title = RecruitConstant.INTERVIEW_EVALUATE_MESSAGE_TITLE; evaluateInterview(params, requestInfo.getCreatorid(), mainDataMap); break; case CANCEL: // 面试取消 - messageType = RecruitModeUtil.getRecruitPropValue("INTERVIEW_MESSAGE_TYPE"); - title = RecruitModeUtil.getRecruitPropValue("INTERVIEW_CANCEL_MESSAGE_TITLE"); + messageType = RecruitConstant.INTERVIEW_MESSAGE_TYPE; + title = RecruitConstant.INTERVIEW_CANCEL_MESSAGE_TITLE; cancelInterView(params, requestInfo, billId, mainDataMap); break; default: diff --git a/src/weaver/formmode/recruit/modeexpand/offer/CreateOfferModeExpand.java b/src/weaver/formmode/recruit/modeexpand/offer/CreateOfferModeExpand.java index 44cb3f7..f3ce493 100644 --- a/src/weaver/formmode/recruit/modeexpand/offer/CreateOfferModeExpand.java +++ b/src/weaver/formmode/recruit/modeexpand/offer/CreateOfferModeExpand.java @@ -1,5 +1,6 @@ package weaver.formmode.recruit.modeexpand.offer; +import com.engine.recruit.constant.RecruitConstant; import com.engine.recruit.enums.RecordOperateEnum; import com.engine.recruit.util.RecruitMessageUtils; import com.weaver.formmodel.data.model.Formfield; @@ -59,8 +60,7 @@ public class CreateOfferModeExpand extends AbstractModeExpandJavaCodeNew { List fieldList = RecruitModeUtil.getFieldList("uf_jcl_offer"); Map> fieldMapList = fieldList.stream().collect(Collectors.groupingBy(Formfield::getLabelName)); // 发送邮件 - String offerMobileUrl = RecruitModeUtil.HTTP_URL + RecruitModeUtil.getRecruitPropValue("OFFER_MOBILE_URL"); - offerMobileUrl += "&billid=" + billId + "&dzyx=" + yx; + String offerMobileUrl = RecruitConstant.OFFER_MOBILE_URL + "&billid=" + billId + "&dzyx=" + yx; String mobileLink = "录用通知函"; tznr = tznr.replace("{录用通知函}", mobileLink); String msgContent = RecruitModeUtil.getReplaceContent(tznr, fieldMapList, mainDataMap); diff --git a/src/weaver/formmode/recruit/modeexpand/util/RecruitModeUtil.java b/src/weaver/formmode/recruit/modeexpand/util/RecruitModeUtil.java index 8093e75..58d9de6 100644 --- a/src/weaver/formmode/recruit/modeexpand/util/RecruitModeUtil.java +++ b/src/weaver/formmode/recruit/modeexpand/util/RecruitModeUtil.java @@ -24,7 +24,6 @@ import weaver.hrm.resource.ResourceComInfo; import java.io.IOException; import java.io.InputStream; -import java.nio.charset.StandardCharsets; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -37,14 +36,6 @@ import java.util.regex.Pattern; public class RecruitModeUtil { private static final Pattern MSG_PATTERN = Pattern.compile(Pattern.quote("{") + "(.*?)" + Pattern.quote("}")); - /** - * 服务外网映射地址 - */ - public static final String HTTP_URL = getRecruitPropValue("HTTP_URL"); - /** - * 简历识别服务类 - */ - public static final String OCR_TYPE = getRecruitPropValue("OCR_TYPE"); /** * 消息推送 @@ -95,17 +86,6 @@ public class RecruitModeUtil { } } - /** - * 获取聚才林招聘相关配置文件 - * - * @param key key - * @return value - */ - public static String getRecruitPropValue(String key) { - String value = new BaseBean().getPropValue("jclRecruit", key); - value = new String(value.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); - return value; - } /** * 转换空字符串为null