Commit ba5ae48e by 284718418@qq.com

ResumeSDK 本地测试

parent d96976e3
...@@ -268,11 +268,17 @@ public class ZpglServiceImpl implements ZpglService { ...@@ -268,11 +268,17 @@ public class ZpglServiceImpl implements ZpglService {
public Result<Object> addResumeImportCandidate(UserBean userBean, MultipartFile file, ImportCandidateDto importCandidateDto) { public Result<Object> addResumeImportCandidate(UserBean userBean, MultipartFile file, ImportCandidateDto importCandidateDto) {
/*BaiduTicResumeDto baiduTicResumeDto = BaiduTicResumeDto.builder().filename(file.getOriginalFilename()).filetype(importCandidateDto.getSuffix()).filedata(Base64.getStrFromPath(file)).build(); /*BaiduTicResumeDto baiduTicResumeDto = BaiduTicResumeDto.builder().filename(file.getOriginalFilename()).filetype(importCandidateDto.getSuffix()).filedata(Base64.getStrFromPath(file)).build();
ResponseEntity<String> resumeString = baiduTicUtil.getResumeByCvParser(baiduTicResumeDto);*/ ResponseEntity<String> resumeString = baiduTicUtil.getResumeByCvParser(baiduTicResumeDto);*/
ResumeSdkDto resumeSdkDto = ResumeSdkDto.builder().ocr_type(1).need_avatar(0).file_name(file.getOriginalFilename()).file_cont(Base64.getStrFromPath(file)).filetype(importCandidateDto.getSuffix()).build(); ResumeSdkDto resumeSdkDto = ResumeSdkDto.builder().ocr_type(1).need_avatar(0).file_name(file.getOriginalFilename()).file_cont(Base64.getStrFromPath(file)).build();
ResponseEntity<String> resumeString = resumeSDKUtil.getResumeByCvParser(resumeSdkDto, RESUMESDK_APPCODE); String resumeString = "";
try {
resumeString = resumeSDKUtil.getResumeByCvParser(resumeSdkDto, RESUMESDK_APPCODE);
}catch (Exception e){
e.printStackTrace();
}
JSONObject json = (JSONObject) JSONObject.parse(resumeString.getBody()); JSONObject json = (JSONObject) JSONObject.parse(resumeString);
log.info("招聘-导入候选人简历{}", resumeString.getBody()); log.info("招聘-导入候选人简历{}", resumeString);
return ResultUtil.success(); return ResultUtil.success();
/*ResumeExtract resumeExtract = null; /*ResumeExtract resumeExtract = null;
if ("success".equals(json.get("error_msg"))) { if ("success".equals(json.get("error_msg"))) {
......
...@@ -24,10 +24,6 @@ public class ResumeSdkDto implements Serializable { ...@@ -24,10 +24,6 @@ public class ResumeSdkDto implements Serializable {
*/ */
private String file_name; private String file_name;
/** /**
* 简历文档类型,目前支持pdf、doc、docx、wps、txt、jpg、jpeg、png、bmp、tif格式
*/
private String filetype;
/**
* 必填字段 简历文件内容(以base64编码),其中: * 必填字段 简历文件内容(以base64编码),其中:
* 1)图片简历:经based64编码后大小建议不超过1M,最短边至少50px,最长边最大4096px, * 1)图片简历:经based64编码后大小建议不超过1M,最短边至少50px,最长边最大4096px,
* 支持jpg/jpeg/png/bmp/tif/gif格式; * 支持jpg/jpeg/png/bmp/tif/gif格式;
......
package cn.timer.api.utils.resumesdk; package cn.timer.api.utils.resumesdk;
import cn.timer.api.dto.resumesdk.ResumeSdkDto; import cn.timer.api.dto.resumesdk.ResumeSdkDto;
import com.alibaba.fastjson.JSONObject;
import org.apache.http.Consts;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.springframework.http.HttpEntity; import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod; import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
...@@ -10,7 +18,11 @@ import org.springframework.util.MultiValueMap; ...@@ -10,7 +18,11 @@ import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/** /**
* @author wuqingjun * @author wuqingjun
...@@ -20,18 +32,46 @@ import java.util.List; ...@@ -20,18 +32,46 @@ import java.util.List;
@Component @Component
public class ResumeSDKUtil { public class ResumeSDKUtil {
public ResponseEntity<String> getResumeByCvParser(ResumeSdkDto resumeSdkDto, String appCode){ public String getResumeByCvParser(ResumeSdkDto resumeSdkDto, String appCode) throws Exception {
String url = "http://resumesdk.market.alicloudapi.com/ResumeParser"; String url = "http://resumesdk.market.alicloudapi.com/ResumeParser";
MultiValueMap<String, String> headers = new LinkedMultiValueMap<>(); // 设置头字段
List<String> list = new ArrayList<>(); HttpPost httpPost = new HttpPost(url);
list.add("Authorization"); httpPost.setHeader("Authorization", "APPCODE " + appCode);
list.add("APPCODE " + appCode); httpPost.addHeader("Content-Type", "application/json; charset=UTF-8");
list.add("Content-Type"); httpPost.addHeader("Content-Type", "application/json");
list.add("application/json; charset=UTF-8");
list.add("Content-Type");
list.add("application/json"); // 设置内容信息
headers.put("header", list); JSONObject json = new JSONObject();
HttpEntity requestEntity = new HttpEntity(resumeSdkDto, headers); json.put("file_name", resumeSdkDto.getFile_name()); // 文件名
return new RestTemplate().exchange(url, HttpMethod.POST,requestEntity, String.class); json.put("file_cont", resumeSdkDto.getFile_cont()); // 经base64编码过的文件内容
json.put("need_avatar", 0); // 是否需要解析头像
json.put("ocr_type", 1); // 1为高级ocr
StringEntity params = new StringEntity(json.toString(), Consts.UTF_8);
httpPost.setEntity(params);
// 发送请求
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = httpclient.execute(httpPost);
// 处理返回结果
return unicodeToCN(EntityUtils.toString(response.getEntity(), Consts.UTF_8));
} }
/**
* Unicode转 汉字字符串
*
* @param str
* @return
*/
private static String unicodeToCN(String str) {
Pattern pattern = Pattern.compile("(\\\\u(\\p{XDigit}{4}))");
Matcher matcher = pattern.matcher(str);
char ch;
while (matcher.find()) {
ch = (char) Integer.parseInt(matcher.group(2), 16);
str = str.replace(matcher.group(1), ch + "");
}
return str;
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment