OCR识别BUG修复,配置文件常量整理

This commit is contained in:
dxfeng 2024-01-17 17:37:25 +08:00
parent 194c515455
commit 006da97a98
16 changed files with 226 additions and 115 deletions

View File

@ -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
#############################\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

View File

@ -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);
}
}
}

View File

@ -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;
}

View File

@ -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);

View File

@ -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<String, Object> updateInductionManageInfo(Map<String, Object> param) {
@ -47,11 +47,11 @@ public class InductionManageServiceImpl extends Service implements InductionMana
public Map<String, Object> sendCollectInfo(Map<String, Object> 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);

View File

@ -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 + "】加入黑名单,相关投递已自动淘汰,请知悉。";

View File

@ -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<String, Object> resumeData = (Map<String, Object>) 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<Map<String, Object>> studyList = (List<Map<String, Object>>) resumeData.remove("jyjl");
List<Map<String, Object>> workList = (List<Map<String, Object>>) resumeData.remove("gzjl");
List<RecruitDataMap<Object>> studyList = (List<RecruitDataMap<Object>>) resumeData.remove("jyjl");
List<RecruitDataMap<Object>> workList = (List<RecruitDataMap<Object>>) resumeData.remove("gzjl");
// 状态
resumeData.put("zt", ApplicationStatusEnum.DISTRIBUTION.getValue());
@ -87,28 +85,15 @@ public class ResumeRecognitionServiceImpl extends Service implements ResumeRecog
// 判断简历信息
Map<String, Object> map = CheckRepeatResume.getInstance().insertResumeAndReturn(resumeData);
CheckRepeatResume instance = CheckRepeatResume.getInstance();
Map<String, Object> 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<String, Object> studMap : studyList) {
studMap.put("mainid", mainId);
RecruitRecordSet.insertData(studMap, "uf_jcl_yppc_dt1");
}
}
if (CollectionUtils.isNotEmpty(workList)) {
for (Map<String, Object> 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<Map<String, Object>> studyList = new ArrayList<>();
List<RecruitDataMap<Object>> 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<String, Object> studyMap = new HashMap<>(getDateRange(studyDate, true));
RecruitDataMap<Object> studyMap = new RecruitDataMap<>();
studyMap.putAll(getDateRange(studyDate, true));
studyMap.put("xxmc", o.getString("院校"));
List<Map<String, String>> 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<Map<String, String>> workList = new ArrayList<>();
List<RecruitDataMap<Object>> 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<String, String> workMap = new HashMap<>(getDateRange(workDate, false));
RecruitDataMap<Object> 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<String, String> getDateRange(String date, boolean isStudy) {
Map<String, String> dataRangeMap = new HashMap<>(2);
private RecruitDataMap<Object> getDateRange(String date, boolean isStudy) {
RecruitDataMap<Object> dataRangeMap = new RecruitDataMap<>();
String[] split = date.split("-");
if (split.length == 2) {
String start = getFormatDate(split[0]);

View File

@ -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;

View File

@ -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<String, Object> resumeUpload(Map<String, Object> param) {
if (StringUtils.isBlank(RecruitModeUtil.OCR_TYPE)) {
if (StringUtils.isBlank(RecruitConstant.OCR_TYPE)) {
return null;
}
return getResumeRecognitionService(user).resumeUpload(param);
}
public Map<String, Object> importResume(Map<String, Object> param) {
if (StringUtils.isBlank(RecruitModeUtil.OCR_TYPE)) {
if (StringUtils.isBlank(RecruitConstant.OCR_TYPE)) {
return null;
}
return getResumeRecognitionService(user).importResume(param);
}
public Map<String, Object> fetchResume(Map<String, Object> param) {
if (StringUtils.isBlank(RecruitModeUtil.OCR_TYPE)) {
if (StringUtils.isBlank(RecruitConstant.OCR_TYPE)) {
return null;
}
return getResumeRecognitionService(user).fetchResume(param);

View File

@ -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<String> userIdSet = new HashSet<>(Arrays.asList(fkr.split(",")));
RecruitModeUtil.messagePush(messageType, messageTitle, msgBuilder.toString(), userIdSet, user.getUID(), linkUrl, "");

View File

@ -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")));

View File

@ -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<String, String> doModeExpand(Map<String, Object> 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 = "<div style=\"border:3px solid silver;width:635px;height:55px;line-height:55px;font-family:'microsoft Yahei';font-size:18px;font-weight:bold;color:#333;padding-left:10px\">请您答复是否参加此次邀请? <a href=\"" + confirmUrl + "&status=0\" style=\"text-decoration:underline;color:#0000cc;margin-right:10px\">参加</a> <a href=\"" + confirmUrl + "&status=1\" style=\"text-decoration:underline;color:#0000cc;\">不参加</a></div>";
// 邮件内容拼接确认信息
emailContent = msgContent + emailContent;
@ -162,7 +149,7 @@ public class BatchAddInterviewResultModeExpand extends AbstractModeExpandJavaCod
Set<String> 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) {

View File

@ -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 = "<div style=\"border:3px solid silver;width:635px;height:55px;line-height:55px;font-family:'microsoft Yahei';font-size:18px;font-weight:bold;color:#333;padding-left:10px\">请您答复是否参加此次邀请? <a href=\"" + confirmUrl + "&status=0\" style=\"text-decoration:underline;color:#0000cc;margin-right:10px\">参加</a> <a href=\"" + confirmUrl + "&status=1\" style=\"text-decoration:underline;color:#0000cc;\">不参加</a></div>";
// 邮件内容拼接确认信息
emailContent = msgContent + emailContent;

View File

@ -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:

View File

@ -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<Formfield> fieldList = RecruitModeUtil.getFieldList("uf_jcl_offer");
Map<String, List<Formfield>> 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 = "<span color='red'><a href='" + offerMobileUrl + "' target='_blank'>录用通知函</a></span>";
tznr = tznr.replace("{录用通知函}", mobileLink);
String msgContent = RecruitModeUtil.getReplaceContent(tznr, fieldMapList, mainDataMap);

View File

@ -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