generated from dxfeng/secondev-chapanda-feishu
84 lines
2.6 KiB
Java
84 lines
2.6 KiB
Java
package com.engine.recruit.util;
|
|
|
|
import com.engine.recruit.exception.CustomizeRunTimeException;
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import weaver.conn.RecordSet;
|
|
import weaver.general.BaseBean;
|
|
|
|
import java.net.URLDecoder;
|
|
import java.util.HashMap;
|
|
import java.util.HashSet;
|
|
import java.util.Map;
|
|
import java.util.Set;
|
|
import java.util.regex.Matcher;
|
|
import java.util.regex.Pattern;
|
|
|
|
/**
|
|
* @author:dxfeng
|
|
* @createTime: 2023/10/12
|
|
* @version: 1.0
|
|
*/
|
|
public class RecruitFlowUtil {
|
|
private static final Pattern URL_REG = Pattern.compile("\\$(.*?)\\$");
|
|
|
|
|
|
/**
|
|
* 解析url中参数信息
|
|
*
|
|
* @param urlString url地址
|
|
* @return
|
|
*/
|
|
public static Map<String, String> parseURL(String urlString) {
|
|
Map<String, String> params = new HashMap<>();
|
|
try {
|
|
if (StringUtils.isNotBlank(urlString)) {
|
|
if (urlString.contains("?")) {
|
|
urlString = urlString.split("\\?")[1];
|
|
}
|
|
String[] paramPairs = urlString.split("&");
|
|
for (String paramPair : paramPairs) {
|
|
String[] keyValue = paramPair.split("=");
|
|
if (keyValue.length == 2) {
|
|
String key = URLDecoder.decode(keyValue[0], "UTF-8");
|
|
String value = URLDecoder.decode(keyValue[1], "UTF-8");
|
|
params.put(key, value);
|
|
}
|
|
}
|
|
}
|
|
} catch (Exception e) {
|
|
new BaseBean().writeLog(e);
|
|
throw new CustomizeRunTimeException(urlString + "解析失败");
|
|
}
|
|
|
|
return params;
|
|
}
|
|
|
|
/**
|
|
* 替换URL中Id字段
|
|
*
|
|
* @param urlString
|
|
* @param billId
|
|
* @return
|
|
*/
|
|
public static String replaceURL(String urlString, String billId) {
|
|
Matcher matcher = URL_REG.matcher(urlString);
|
|
Set<String> matches = new HashSet<>();
|
|
while (matcher.find()) {
|
|
matches.add(matcher.group(1));
|
|
}
|
|
matches.remove("parentid");
|
|
if (CollectionUtils.isNotEmpty(matches)) {
|
|
String fields = StringUtils.join(matches, ",");
|
|
RecordSet rs = new RecordSet();
|
|
rs.executeQuery("select " + fields + " from uf_jcl_yppc where id = ? ", billId);
|
|
if (rs.next()) {
|
|
for (String match : matches) {
|
|
urlString = urlString.replaceAll("\\$" + match + "\\$", rs.getString(match));
|
|
}
|
|
}
|
|
}
|
|
return urlString.replaceAll("\\$parentid\\$", billId);
|
|
}
|
|
}
|