liupeng 5 vuotta sitten
vanhempi
commit
d627e3403a

+ 407 - 407
code/sapparent/sapservice/src/main/java/org/fouram/service/SapReportService.java

@@ -1,407 +1,407 @@
-package org.fouram.service;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.fouram.core.base.service.BaseService;
-import org.fouram.core.base.service.RequestService;
-import org.fouram.core.util.Base64Util;
-import org.fouram.core.util.ConfConfig;
-import org.fouram.entity.SapUser;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpHeaders;
-import org.springframework.stereotype.Service;
-
-import com.fasterxml.jackson.databind.JsonNode;
-
-@Service
-public class SapReportService extends BaseService {
-
-	@Autowired
-	private RequestService requestService;
-
-	@SuppressWarnings("unchecked")
-	public List<SapUser> selectReportUserList() throws Exception {
-		return (List<SapUser>) findList("SapUserMapper.selectReportUserList", null);
-	}
-
-	private HttpHeaders getHttpHeaders() {
-		HttpHeaders headers = new HttpHeaders();
-		StringBuilder stringBuilder = new StringBuilder();
-		String sapApiUser = ConfConfig.getConfigString("sapApi.user");
-		String authorizationStr = stringBuilder.append("Basic ").append(Base64Util.encodeString(sapApiUser)).toString();
-		headers.add("Authorization", authorizationStr);
-		return headers;
-	}
-
-	public void saveAllReportData() throws Exception {
-		HttpHeaders headers = getHttpHeaders();
-		List<SapUser> sapUsers = selectReportUserList();
-		String personIds = "";
-		String userIds = "";
-		for (SapUser sapUser : sapUsers) {
-			personIds += "'" + sapUser.getPersonId() + "',";
-			userIds += "'" + sapUser.getUserId() + "',";
-		}
-		this.saveOrUpdateBackgroundCertificates(headers, personIds, userIds);
-		this.saveOrUpdateBackgroundCourses(headers, userIds);
-		this.saveOrUpdateBackgroundEducation(headers, personIds, userIds);
-		this.saveOrUpdateBackgroundInsideWorkExperience(headers, userIds);
-		this.saveOrUpdateBackgroundLanguages(headers, personIds, userIds);
-		this.saveOrUpdateTrendDataSysOverallPerformance(headers, personIds, userIds);
-		this.saveOrUpdateBackgroundOutsideWorkExperience(headers, userIds);
-		this.saveOrUpdateEmpEmployment(headers, personIds, userIds);
-		this.saveOrUpdateEmpJob(headers, personIds, userIds);
-		this.saveOrUpdateEmpJobRelationships(headers, userIds);
-		this.saveOrUpdatePerEmail(headers, personIds, userIds);
-		this.saveOrUpdatePerGlobalInfoCHN(headers, personIds, userIds);
-		this.saveOrUpdatePerNationalId(headers, personIds, userIds);
-		this.saveOrUpdatePerPerson(headers, personIds, userIds);
-		this.saveOrUpdatePerPhone(headers, personIds, userIds);
-		this.saveOrUpdatePerSocialAccount(headers, personIds, userIds);
-	}
-
-//	基本信息	PerPerson,PerPersonal
-	public void saveOrUpdatePerPerson(HttpHeaders headers, String personIds, String userIds) {
-		String url = "https://api15.sapsf.cn/odata/v2/PerPerson?$filter=personIdExternal in %s&$format=json&$expand=customString1Nav";
-		url = String.format(url, personIds);
-		JsonNode node = requestService.getForObject(url, headers);
-		if (node != null) {
-			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
-			while (iterator.hasNext()) {
-				JsonNode userNode = iterator.next();
-				String personId = userNode.get("personIdExternal").asText().trim();// 员工号
-				String dateOfBirth = userNode.get("dateOfBirth").asText().trim();// 出生日期
-				String placeOfBirth = userNode.get("placeOfBirth").asText().trim();// 籍贯
-				String customString1Code = userNode.get("customString1Nav").get("externalCode").asText().trim();// 最高学历
-			}
-		}
-		
-		url = "https://api15.sapsf.cn/odata/v2/PerPersonal?$filter=personIdExternal in %s&$format=json";
-		url = String.format(url, personIds);
-		node = requestService.getForObject(url, headers);
-		if (node != null) {
-			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
-			while (iterator.hasNext()) {
-				JsonNode userNode = iterator.next();
-				String personId = userNode.get("personIdExternal").asText().trim();
-				String firstName = userNode.get("firstName").asText().trim();// 名字
-				String lastName = userNode.get("lastName").asText().trim();// 姓氏
-				String displayName = userNode.get("displayName").asText().trim();// 英文全名
-				String formalName = userNode.get("formalName").asText().trim();// 全名
-				String nationality = userNode.get("nationality").asText().trim();// 国籍
-				String gender = userNode.get("gender").asText().trim();// 性别
-			}
-		}
-	}
-
-//	个人信息	PerGlobalInfoCHN
-	public void saveOrUpdatePerGlobalInfoCHN(HttpHeaders headers, String personIds, String userIds) {
-		String url = "https://api15.sapsf.cn/odata/v2/PerGlobalInfoCHN?$filter=personIdExternal in %s&$format=json";
-		url = String.format(url, personIds);
-		JsonNode node = requestService.getForObject(url, headers);
-		if (node != null) {
-			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
-			while (iterator.hasNext()) {
-				JsonNode userNode = iterator.next();
-				String personId = userNode.get("personIdExternal").asText().trim();
-				// 婚姻状况
-				// 英文名
-				// 英文姓
-				// 拼音名
-				// 拼音姓
-				// 户口类型
-				// 民族
-				// 政治面貌
-				// 组织关系所在地
-				// 户口所在地
-			}
-		}
-	}
-
-//	国家身份信息	PerNationalId
-	public void saveOrUpdatePerNationalId(HttpHeaders headers, String personIds, String userIds) {
-		String url = "https://api15.sapsf.cn/odata/v2/PerNationalId?$filter=personIdExternal in %s&$format=json&$expand=countryNav";
-		url = String.format(url, personIds);
-		JsonNode node = requestService.getForObject(url, headers);
-		if (node != null) {
-			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
-			while (iterator.hasNext()) {
-				JsonNode userNode = iterator.next();
-				String personId = userNode.get("personIdExternal").asText().trim();
-				String countryName = userNode.get("countryNav").get("territoryName").asText().trim();// 国家/地区 
-				String cardType = userNode.get("cardType").asText().trim();// 国民身份证类型 
-				String nationalId = userNode.get("nationalId").asText().trim();// 国民身份证 
-			}
-		}
-	}
-
-//	邮件信息	PerEmail
-	public void saveOrUpdatePerEmail(HttpHeaders headers, String personIds, String userIds) {
-		String url = "https://api15.sapsf.cn/odata/v2/PerEmail?$filter=personIdExternal in %s&$format=json&$expand=emailTypeNav";
-		url = String.format(url, personIds);
-		JsonNode node = requestService.getForObject(url, headers);
-		if (node != null) {
-			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
-			while (iterator.hasNext()) {
-				JsonNode userNode = iterator.next();
-				String personId = userNode.get("personIdExternal").asText().trim();
-				String emailTypeCode = userNode.get("emailTypeNav").get("externalCode").asText().trim();// 电子邮件类型 
-				String emailAddress = userNode.get("emailAddress").asText().trim();// 电子邮件地址 
-				String isPrimary = userNode.get("isPrimary").asText().trim();// 主要 
-			}
-		}
-
-	}
-
-//	通讯信息	PerPhone
-	public void saveOrUpdatePerPhone(HttpHeaders headers, String personIds, String userIds) {
-		String url = "https://api15.sapsf.cn/odata/v2/PerPhone?$filter=personIdExternal in %s&$format=json&$expand=phoneTypeNav";
-		url = String.format(url, personIds);
-		JsonNode node = requestService.getForObject(url, headers);
-		if (node != null) {
-			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
-			while (iterator.hasNext()) {
-				JsonNode userNode = iterator.next();
-				String personId = userNode.get("personIdExternal").asText().trim();
-				String phoneTypeCode = userNode.get("phoneTypeNav").get("externalCode").asText().trim();//电话类型	
-				String phoneNumber = userNode.get("phoneNumber").asText().trim();//电话号码	
-				String isPrimary = userNode.get("isPrimary").asText().trim();//主要	
-			}
-		}
-	}
-
-//	社交账号	PerSocialAccount
-	public void saveOrUpdatePerSocialAccount(HttpHeaders headers, String personIds, String userIds) {
-		String url = "https://api15.sapsf.cn/odata/v2/PerSocialAccount?$filter=personIdExternal in %s&$format=json&$expand=domainNav";
-		url = String.format(url, personIds);
-		JsonNode node = requestService.getForObject(url, headers);
-		if (node != null) {
-			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
-			while (iterator.hasNext()) {
-				JsonNode userNode = iterator.next();
-				String personId = userNode.get("personIdExternal").asText().trim();
-				String domainCode = userNode.get("domainNav").get("externalCode").asText().trim();//微信
-				String imId = userNode.get("imId").asText().trim();//微信号
-			}
-		}
-	}
-
-//	雇佣详细信息	EmpEmployment
-	public void saveOrUpdateEmpEmployment(HttpHeaders headers, String personIds, String userIds) {
-		String url = "https://api15.sapsf.cn/odata/v2/EmpEmployment?$filter=personIdExternal in %s&$format=json";
-		url = String.format(url, personIds);
-		JsonNode node = requestService.getForObject(url, headers);
-		if (node != null) {
-			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
-			while (iterator.hasNext()) {
-				JsonNode userNode = iterator.next();
-				String personId = userNode.get("personIdExternal").asText().trim();
-				//最近一次入职日期
-				//首次工作日期
-				//进入集团日期
-				//公司
-				//司龄计算日
-				//社会工龄
-				//司龄(最近入职)
-				//离职日期
-				//离职原因
-				//可以再雇佣
-				//工资单结束日期
-				//最后工作日期
-				//最后结薪日期
-				//福利结算日期
-				//离职详细原因
-			}
-		}
-	}
-
-	// 组织以及职位信息 EmpJob
-	public void saveOrUpdateEmpJob(HttpHeaders headers, String personIds, String userIds) {
-		String url = "https://api15.sapsf.cn/odata/v2/EmpJob?$filter=userId in %s&$format=json&$expand=positionNav";
-		url = String.format(url, personIds);
-		JsonNode node = requestService.getForObject(url, headers);
-		if (node != null) {
-			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
-			while (iterator.hasNext()) {
-				JsonNode userNode = iterator.next();
-				String userId = userNode.get("userId").asText().trim();
-				String jobTitle = userNode.get("jobTitle").asText().trim();// 职位
-				String positionEntryDate = userNode.get("positionEntryDate").asText().trim();// 就职日期
-				String personId = userNode.get("personIdExternal").asText().trim();// 在职时间
-				String companyName = userNode.get("companyNav").get("name").asText().trim();// 公司
-//				String personId = userNode.get("personIdExternal").asText().trim();// 业务单元
-//				String personId = userNode.get("personIdExternal").asText().trim();// 部门
-//				String personId = userNode.get("personIdExternal").asText().trim();// 团队
-//				String personId = userNode.get("personIdExternal").asText().trim();// 小组
-//				String personId = userNode.get("personIdExternal").asText().trim();// 工作地点
-//				String managerId = userNode.get("managerId").asText().trim();// TODO直线经理
-//				String personId = userNode.get("personIdExternal").asText().trim();// 职务分类
-//				String personId = userNode.get("personIdExternal").asText().trim();// 标准职务名称
-//				String personId = userNode.get("personIdExternal").asText().trim();// 员工性质
-//				String personId = userNode.get("personIdExternal").asText().trim();// 标准职务名称
-//				String personId = userNode.get("personIdExternal").asText().trim();// 员工性质
-//				String personId = userNode.get("personIdExternal").asText().trim();// 职级
-//				String personId = userNode.get("personIdExternal").asText().trim();// 是否管理层
-			}
-		}
-	}
-
-	// 工作关系 EmpJobRelationships
-	public void saveOrUpdateEmpJobRelationships(HttpHeaders headers, String userIds) {
-		String url = "https://api15.sapsf.cn/odata/v2/EmpJobRelationships?$filter=userId in %s&$format=json&$expand=relationshipTypeNav,relUserNav";
-		url = String.format(url, userIds);
-		JsonNode node = requestService.getForObject(url, headers);
-		if (node != null) {
-			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
-			while (iterator.hasNext()) {
-				JsonNode userNode = iterator.next();
-				String userId = userNode.get("userId").asText().trim();
-				String relationshipTypeCode = userNode.get("relationshipTypeNav").get("externalCode").asText().trim();// 关系类型
-				String relUserName = userNode.get("relUserNav").get("lastName").asText().trim()
-						+ userNode.get("relUserNav").get("firstName").asText().trim();// 姓名
-			}
-		}
-	}
-
-	// 先前工作经历 Background_OutsideWorkExperience
-	public void saveOrUpdateBackgroundOutsideWorkExperience(HttpHeaders headers, String userIds) {
-		String url = "https://api15.sapsf.cn/odata/v2/Background_OutsideWorkExperience?$filter=userId in %s&$format=json";
-		url = String.format(url, userIds);
-		JsonNode node = requestService.getForObject(url, headers);
-		if (node != null) {
-			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
-			while (iterator.hasNext()) {
-				JsonNode userNode = iterator.next();
-				String userId = userNode.get("userId").asText().trim();
-				String startDate = userNode.get("startDate").asText().trim(); // 开始日期
-				String endDate = userNode.get("endDate").asText().trim();// 结束日期
-				String employer = userNode.get("employer").asText().trim();// 曾工作公司名称
-				String businessType = userNode.get("businessType").asText().trim();// 公司所在地
-				String startTitle = userNode.get("startTitle").asText().trim();// 所在部门
-				String custom1 = userNode.get("custom1").asText().trim();// 职位
-				String custom2 = userNode.get("custom2").asText().trim();// 离职原因
-				String custom3 = userNode.get("custom3").asText().trim();// 直接上司姓名
-				String custom4 = userNode.get("custom4").asText().trim();// 联系方式
-			}
-		}
-	}
-
-	// 公司内工作经历 Background_InsideWorkExperience
-	public void saveOrUpdateBackgroundInsideWorkExperience(HttpHeaders headers, String userIds) {
-		String url = "https://api15.sapsf.cn/odata/v2/Background_InsideWorkExperience?$filter=userId in %s&$format=json";
-		url = String.format(url, userIds);
-		JsonNode node = requestService.getForObject(url, headers);
-		if (node != null) {
-			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
-			while (iterator.hasNext()) {
-				JsonNode userNode = iterator.next();
-				String userId = userNode.get("userId").asText().trim();
-				String startDate = userNode.get("startDate").asText().trim();// 开始日期
-				String endDate = userNode.get("endDate").asText().trim();// 结束日期
-				String title = userNode.get("title").asText().trim();// 职务
-				String department = userNode.get("department").asText().trim();// 部门
-			}
-		}
-	}
-
-	// 培训经历 Background_Courses
-	public void saveOrUpdateBackgroundCourses(HttpHeaders headers, String userIds) {
-		String url = "https://api15.sapsf.cn/odata/v2/Background_Courses?$filter=userId in %s&$format=json&$expand=custom3Nav,lengthNav";
-		url = String.format(url, userIds);
-		JsonNode node = requestService.getForObject(url, headers);
-		if (node != null) {
-			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
-			while (iterator.hasNext()) {
-				JsonNode userNode = iterator.next();
-				String userId = userNode.get("userId").asText().trim();
-				String course = userNode.get("course").asText().trim();// 课程名称
-				String institution = userNode.get("institution").asText().trim();// 开始日期
-				String instructionType = userNode.get("instructionType").asText().trim();// 结束日期
-				String lengthCode = userNode.get("lengthNav").get("externalCode").asText().trim();// 培训类型
-				String custom9 = userNode.get("custom9").asText().trim();// 培训地点
-				String custom1 = userNode.get("custom1").asText().trim();// 历时
-				String custom2 = userNode.get("custom2").asText().trim();// 培训结果
-				String custom3Code = userNode.get("custom3Nav").get("externalCode").asText().trim();// 是否有证书
-				String custom4 = userNode.get("custom4").asText().trim();// 培训服务期到期时间
-				String custom7 = userNode.get("custom7").asText().trim();// 备注
-			}
-		}
-	}
-
-	// 学历教育 Background_Education
-	public void saveOrUpdateBackgroundEducation(HttpHeaders headers, String personIds, String userIds) {
-		String url = "https://api15.sapsf.cn/odata/v2/Background_Education?$filter=userId in %s&$format=json";
-		url = String.format(url, personIds);
-		JsonNode node = requestService.getForObject(url, headers);
-		if (node != null) {
-			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
-			while (iterator.hasNext()) {
-				JsonNode userNode = iterator.next();
-				String userId = userNode.get("userId").asText().trim();
-				String startDate = userNode.get("startDate").asText().trim();// 开始日期
-				String endDate = userNode.get("endDate").asText().trim();// 结束日期
-				String school = userNode.get("school").asText().trim();// 院校
-				String major = userNode.get("major").asText().trim();// 专业
-				String degree = userNode.get("degree").asText().trim();// 学历
-				String custom1 = userNode.get("custom1").asText().trim();// 学位
-			}
-		}
-	}
-
-	// 证书 Background_Certificates
-	public void saveOrUpdateBackgroundCertificates(HttpHeaders headers, String personIds, String userIds) {
-		String url = "https://api15.sapsf.cn/odata/v2/Background_Certificates?$filter=userId in %s&$format=json";
-		url = String.format(url, personIds);
-		JsonNode node = requestService.getForObject(url, headers);
-		if (node != null) {
-			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
-			while (iterator.hasNext()) {
-				JsonNode userNode = iterator.next();
-				String userId = userNode.get("userId").asText().trim();
-				String name = userNode.get("name").asText().trim();// 证书/执照
-				String description = userNode.get("description").asText().trim();// 描述
-				String institution = userNode.get("institution").asText().trim();// 证书颁发机构
-				String startDate = userNode.get("startDate").asText().trim();// 证书颁发日期
-				String endDate = userNode.get("endDate").asText().trim();// 证书到期日期
-			}
-		}
-	}
-
-	// 语言能力 Background_Languages
-	public void saveOrUpdateBackgroundLanguages(HttpHeaders headers, String personIds, String userIds) {
-		String url = "https://api15.sapsf.cn/odata/v2/Background_Languages?$filter=userId in %s&$format=json&$expand=languageNav,speakingProfNav,readingProfNav,writingProfNav";
-		url = String.format(url, personIds);
-		JsonNode node = requestService.getForObject(url, headers);
-		if (node != null) {
-			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
-			while (iterator.hasNext()) {
-				JsonNode userNode = iterator.next();
-				String userId = userNode.get("userId").asText().trim();
-				String languageCode = userNode.get("languageNav").get("externalCode").asText().trim();// 语言
-				String speakingProfCode = userNode.get("speakingProfNav").asText().trim();// 口语能力
-				String readingProfCode = userNode.get("readingProfNav").asText().trim();// 阅读能力
-				String writingProfCode = userNode.get("writingProfNav").asText().trim();// 书写能力
-			}
-		}
-	}
-
-	// 绩效历史 TrendData_SysOverallPerformance
-	public void saveOrUpdateTrendDataSysOverallPerformance(HttpHeaders headers, String personIds, String userIds) {
-		String url = "https://api15.sapsf.cn/odata/v2/TrendData_SysOverallPerformance?$filter=userId in %s&$format=json";
-		url = String.format(url, personIds);
-		JsonNode node = requestService.getForObject(url, headers);
-		if (node != null) {
-			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
-			while (iterator.hasNext()) {
-				JsonNode userNode = iterator.next();
-				String userId = userNode.get("userId").asText().trim();
-				String startDate = userNode.get("startDate").asText().trim(); // 起始日期
-				String endDate = userNode.get("endDate").asText().trim();// 结束日期
-				String module = userNode.get("module").asText().trim(); // 模块
-				String name = userNode.get("name").asText().trim(); // 名称
-				String description = userNode.get("description").asText().trim();// 描述
-			}
-		}
-	}
-}
+package org.fouram.service;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.fouram.core.base.service.BaseService;
+import org.fouram.core.base.service.RequestService;
+import org.fouram.core.util.Base64Util;
+import org.fouram.core.util.ConfConfig;
+import org.fouram.entity.SapUser;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpHeaders;
+import org.springframework.stereotype.Service;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+@Service
+public class SapReportService extends BaseService {
+
+	@Autowired
+	private RequestService requestService;
+
+	@SuppressWarnings("unchecked")
+	public List<SapUser> selectReportUserList() throws Exception {
+		return (List<SapUser>) findList("SapUserMapper.selectReportUserList", null);
+	}
+
+	private HttpHeaders getHttpHeaders() {
+		HttpHeaders headers = new HttpHeaders();
+		StringBuilder stringBuilder = new StringBuilder();
+		String sapApiUser = ConfConfig.getConfigString("sapApi.user");
+		String authorizationStr = stringBuilder.append("Basic ").append(Base64Util.encodeString(sapApiUser)).toString();
+		headers.add("Authorization", authorizationStr);
+		return headers;
+	}
+
+	public void saveAllReportData() throws Exception {
+		HttpHeaders headers = getHttpHeaders();
+		List<SapUser> sapUsers = selectReportUserList();
+		String personIds = "";
+		String userIds = "";
+		for (SapUser sapUser : sapUsers) {
+			personIds += "'" + sapUser.getPersonId() + "',";
+			userIds += "'" + sapUser.getUserId() + "',";
+		}
+		this.saveOrUpdateBackgroundCertificates(headers, personIds, userIds);
+		this.saveOrUpdateBackgroundCourses(headers, userIds);
+		this.saveOrUpdateBackgroundEducation(headers, personIds, userIds);
+		this.saveOrUpdateBackgroundInsideWorkExperience(headers, userIds);
+		this.saveOrUpdateBackgroundLanguages(headers, personIds, userIds);
+		this.saveOrUpdateTrendDataSysOverallPerformance(headers, personIds, userIds);
+		this.saveOrUpdateBackgroundOutsideWorkExperience(headers, userIds);
+		this.saveOrUpdateEmpEmployment(headers, personIds, userIds);
+		this.saveOrUpdateEmpJob(headers, personIds, userIds);
+		this.saveOrUpdateEmpJobRelationships(headers, userIds);
+		this.saveOrUpdatePerEmail(headers, personIds, userIds);
+		this.saveOrUpdatePerGlobalInfoCHN(headers, personIds, userIds);
+		this.saveOrUpdatePerNationalId(headers, personIds, userIds);
+		this.saveOrUpdatePerPerson(headers, personIds, userIds);
+		this.saveOrUpdatePerPhone(headers, personIds, userIds);
+		this.saveOrUpdatePerSocialAccount(headers, personIds, userIds);
+	}
+
+//	基本信息	PerPerson,PerPersonal
+	public void saveOrUpdatePerPerson(HttpHeaders headers, String personIds, String userIds) {
+		String url = "https://api15.sapsf.cn/odata/v2/PerPerson?$filter=personIdExternal in %s&$format=json&$expand=customString1Nav";
+		url = String.format(url, personIds);
+		JsonNode node = requestService.getForObject(url, headers);
+		if (node != null) {
+			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
+			while (iterator.hasNext()) {
+				JsonNode userNode = iterator.next();
+				String personId = userNode.get("personIdExternal").asText().trim();// 员工号
+				String dateOfBirth = userNode.get("dateOfBirth").asText().trim();// 出生日期
+				String placeOfBirth = userNode.get("placeOfBirth").asText().trim();// 籍贯
+				String customString1Code = userNode.get("customString1Nav").get("externalCode").asText().trim();// 最高学历
+			}
+		}
+		
+		url = "https://api15.sapsf.cn/odata/v2/PerPersonal?$filter=personIdExternal in %s&$format=json&$expand=maritalStatusNav";
+		url = String.format(url, personIds);
+		node = requestService.getForObject(url, headers);
+		if (node != null) {
+			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
+			while (iterator.hasNext()) {
+				JsonNode userNode = iterator.next();
+				String personId = userNode.get("personIdExternal").asText().trim();
+				String firstName = userNode.get("firstName").asText().trim();// 名字
+				String lastName = userNode.get("lastName").asText().trim();// 姓氏
+				String displayName = userNode.get("displayName").asText().trim();// 英文全名
+				String formalName = userNode.get("formalName").asText().trim();// 全名
+				String nationality = userNode.get("nationality").asText().trim();// 国籍
+				String gender = userNode.get("gender").asText().trim();// 性别
+				String maritalStatusCode = userNode.get("maritalStatusNav").get("externalCode").asText().trim();// 婚姻状况
+				String firstNameAlt1 = userNode.get("firstNameAlt1").asText().trim();// 英文名
+				String lastNameAlt1 = userNode.get("lastNameAlt1").asText().trim();// 英文姓
+				String firstNameAlt2 = userNode.get("firstNameAlt2").asText().trim();// 拼音名
+				String lastNameAlt2 = userNode.get("lastNameAlt2").asText().trim();// 拼音姓
+			}
+		}
+	}
+
+//	个人信息	PerGlobalInfoCHN
+	public void saveOrUpdatePerGlobalInfoCHN(HttpHeaders headers, String personIds, String userIds) {
+		String url = "https://api15.sapsf.cn/odata/v2/PerGlobalInfoCHN?$filter=personIdExternal in %s&$format=json";
+		url = String.format(url, personIds);
+		JsonNode node = requestService.getForObject(url, headers);
+		if (node != null) {
+			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
+			while (iterator.hasNext()) {
+				JsonNode userNode = iterator.next();
+				String personId = userNode.get("personIdExternal").asText().trim();
+				String genericNumber1Code = userNode.get("genericNumber1Nav").get("externalCode").asText().trim();// 户口类型
+				String genericNumber4Code = userNode.get("genericNumber4Nav").get("externalCode").asText().trim();// 民族
+				String customString6Code = userNode.get("customString6Nav").get("externalCode").asText().trim();// 政治面貌
+				String customString1 = userNode.get("customString1").asText().trim();// 组织关系所在地
+				String customString2 = userNode.get("customString2").asText().trim();// 社保所在地
+			}
+		}
+	}
+
+//	国家身份信息	PerNationalId
+	public void saveOrUpdatePerNationalId(HttpHeaders headers, String personIds, String userIds) {
+		String url = "https://api15.sapsf.cn/odata/v2/PerNationalId?$filter=personIdExternal in %s&$format=json&$expand=countryNav";
+		url = String.format(url, personIds);
+		JsonNode node = requestService.getForObject(url, headers);
+		if (node != null) {
+			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
+			while (iterator.hasNext()) {
+				JsonNode userNode = iterator.next();
+				String personId = userNode.get("personIdExternal").asText().trim();
+				String countryName = userNode.get("countryNav").get("territoryName").asText().trim();// 国家/地区 
+				String cardType = userNode.get("cardType").asText().trim();// 国民身份证类型 
+				String nationalId = userNode.get("nationalId").asText().trim();// 国民身份证 
+			}
+		}
+	}
+
+//	邮件信息	PerEmail
+	public void saveOrUpdatePerEmail(HttpHeaders headers, String personIds, String userIds) {
+		String url = "https://api15.sapsf.cn/odata/v2/PerEmail?$filter=personIdExternal in %s&$format=json&$expand=emailTypeNav";
+		url = String.format(url, personIds);
+		JsonNode node = requestService.getForObject(url, headers);
+		if (node != null) {
+			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
+			while (iterator.hasNext()) {
+				JsonNode userNode = iterator.next();
+				String personId = userNode.get("personIdExternal").asText().trim();
+				String emailTypeCode = userNode.get("emailTypeNav").get("externalCode").asText().trim();// 电子邮件类型 
+				String emailAddress = userNode.get("emailAddress").asText().trim();// 电子邮件地址 
+				String isPrimary = userNode.get("isPrimary").asText().trim();// 主要 
+			}
+		}
+
+	}
+
+//	通讯信息	PerPhone
+	public void saveOrUpdatePerPhone(HttpHeaders headers, String personIds, String userIds) {
+		String url = "https://api15.sapsf.cn/odata/v2/PerPhone?$filter=personIdExternal in %s&$format=json&$expand=phoneTypeNav";
+		url = String.format(url, personIds);
+		JsonNode node = requestService.getForObject(url, headers);
+		if (node != null) {
+			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
+			while (iterator.hasNext()) {
+				JsonNode userNode = iterator.next();
+				String personId = userNode.get("personIdExternal").asText().trim();
+				String phoneTypeCode = userNode.get("phoneTypeNav").get("externalCode").asText().trim();//电话类型	
+				String phoneNumber = userNode.get("phoneNumber").asText().trim();//电话号码	
+				String isPrimary = userNode.get("isPrimary").asText().trim();//主要	
+			}
+		}
+	}
+
+//	社交账号	PerSocialAccount
+	public void saveOrUpdatePerSocialAccount(HttpHeaders headers, String personIds, String userIds) {
+		String url = "https://api15.sapsf.cn/odata/v2/PerSocialAccount?$filter=personIdExternal in %s&$format=json&$expand=domainNav";
+		url = String.format(url, personIds);
+		JsonNode node = requestService.getForObject(url, headers);
+		if (node != null) {
+			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
+			while (iterator.hasNext()) {
+				JsonNode userNode = iterator.next();
+				String personId = userNode.get("personIdExternal").asText().trim();
+				String domainCode = userNode.get("domainNav").get("externalCode").asText().trim();//微信
+				String imId = userNode.get("imId").asText().trim();//微信号
+			}
+		}
+	}
+
+//	雇佣详细信息	EmpEmployment
+	public void saveOrUpdateEmpEmployment(HttpHeaders headers, String personIds, String userIds) {
+		String url = "https://api15.sapsf.cn/odata/v2/EmpEmployment?$filter=personIdExternal in %s&$format=json";
+		url = String.format(url, personIds);
+		JsonNode node = requestService.getForObject(url, headers);
+		if (node != null) {
+			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
+			while (iterator.hasNext()) {
+				JsonNode userNode = iterator.next();
+				String personId = userNode.get("personIdExternal").asText().trim();
+				//最近一次入职日期
+				//首次工作日期
+				//进入集团日期
+				//公司
+				//司龄计算日
+				//社会工龄
+				//司龄(最近入职)
+				//离职日期
+				//离职原因
+				//可以再雇佣
+				//工资单结束日期
+				//最后工作日期
+				//最后结薪日期
+				//福利结算日期
+				//离职详细原因
+			}
+		}
+	}
+
+	// 组织以及职位信息 EmpJob
+	public void saveOrUpdateEmpJob(HttpHeaders headers, String personIds, String userIds) {
+		String url = "https://api15.sapsf.cn/odata/v2/EmpJob?$filter=userId in %s&$format=json&$expand=positionNav";
+		url = String.format(url, personIds);
+		JsonNode node = requestService.getForObject(url, headers);
+		if (node != null) {
+			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
+			while (iterator.hasNext()) {
+				JsonNode userNode = iterator.next();
+				String userId = userNode.get("userId").asText().trim();
+				String jobTitle = userNode.get("jobTitle").asText().trim();// 职位
+				String positionEntryDate = userNode.get("positionEntryDate").asText().trim();// 就职日期
+				String personId = userNode.get("personIdExternal").asText().trim();// 在职时间
+				String companyName = userNode.get("companyNav").get("name").asText().trim();// 公司
+//				String personId = userNode.get("personIdExternal").asText().trim();// 业务单元
+//				String personId = userNode.get("personIdExternal").asText().trim();// 部门
+//				String personId = userNode.get("personIdExternal").asText().trim();// 团队
+//				String personId = userNode.get("personIdExternal").asText().trim();// 小组
+//				String personId = userNode.get("personIdExternal").asText().trim();// 工作地点
+//				String managerId = userNode.get("managerId").asText().trim();// TODO直线经理
+//				String personId = userNode.get("personIdExternal").asText().trim();// 职务分类
+//				String personId = userNode.get("personIdExternal").asText().trim();// 标准职务名称
+//				String personId = userNode.get("personIdExternal").asText().trim();// 员工性质
+//				String personId = userNode.get("personIdExternal").asText().trim();// 标准职务名称
+//				String personId = userNode.get("personIdExternal").asText().trim();// 员工性质
+//				String personId = userNode.get("personIdExternal").asText().trim();// 职级
+//				String personId = userNode.get("personIdExternal").asText().trim();// 是否管理层
+			}
+		}
+	}
+
+	// 工作关系 EmpJobRelationships
+	public void saveOrUpdateEmpJobRelationships(HttpHeaders headers, String userIds) {
+		String url = "https://api15.sapsf.cn/odata/v2/EmpJobRelationships?$filter=userId in %s&$format=json&$expand=relationshipTypeNav,relUserNav";
+		url = String.format(url, userIds);
+		JsonNode node = requestService.getForObject(url, headers);
+		if (node != null) {
+			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
+			while (iterator.hasNext()) {
+				JsonNode userNode = iterator.next();
+				String userId = userNode.get("userId").asText().trim();
+				String relationshipTypeCode = userNode.get("relationshipTypeNav").get("externalCode").asText().trim();// 关系类型
+				String relUserName = userNode.get("relUserNav").get("lastName").asText().trim()
+						+ userNode.get("relUserNav").get("firstName").asText().trim();// 姓名
+			}
+		}
+	}
+
+	// 先前工作经历 Background_OutsideWorkExperience
+	public void saveOrUpdateBackgroundOutsideWorkExperience(HttpHeaders headers, String userIds) {
+		String url = "https://api15.sapsf.cn/odata/v2/Background_OutsideWorkExperience?$filter=userId in %s&$format=json";
+		url = String.format(url, userIds);
+		JsonNode node = requestService.getForObject(url, headers);
+		if (node != null) {
+			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
+			while (iterator.hasNext()) {
+				JsonNode userNode = iterator.next();
+				String userId = userNode.get("userId").asText().trim();
+				String startDate = userNode.get("startDate").asText().trim(); // 开始日期
+				String endDate = userNode.get("endDate").asText().trim();// 结束日期
+				String employer = userNode.get("employer").asText().trim();// 曾工作公司名称
+				String businessType = userNode.get("businessType").asText().trim();// 公司所在地
+				String startTitle = userNode.get("startTitle").asText().trim();// 所在部门
+				String custom1 = userNode.get("custom1").asText().trim();// 职位
+				String custom2 = userNode.get("custom2").asText().trim();// 离职原因
+				String custom3 = userNode.get("custom3").asText().trim();// 直接上司姓名
+				String custom4 = userNode.get("custom4").asText().trim();// 联系方式
+			}
+		}
+	}
+
+	// 公司内工作经历 Background_InsideWorkExperience
+	public void saveOrUpdateBackgroundInsideWorkExperience(HttpHeaders headers, String userIds) {
+		String url = "https://api15.sapsf.cn/odata/v2/Background_InsideWorkExperience?$filter=userId in %s&$format=json";
+		url = String.format(url, userIds);
+		JsonNode node = requestService.getForObject(url, headers);
+		if (node != null) {
+			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
+			while (iterator.hasNext()) {
+				JsonNode userNode = iterator.next();
+				String userId = userNode.get("userId").asText().trim();
+				String startDate = userNode.get("startDate").asText().trim();// 开始日期
+				String endDate = userNode.get("endDate").asText().trim();// 结束日期
+				String title = userNode.get("title").asText().trim();// 职务
+				String department = userNode.get("department").asText().trim();// 部门
+			}
+		}
+	}
+
+	// 培训经历 Background_Courses
+	public void saveOrUpdateBackgroundCourses(HttpHeaders headers, String userIds) {
+		String url = "https://api15.sapsf.cn/odata/v2/Background_Courses?$filter=userId in %s&$format=json&$expand=custom3Nav,lengthNav";
+		url = String.format(url, userIds);
+		JsonNode node = requestService.getForObject(url, headers);
+		if (node != null) {
+			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
+			while (iterator.hasNext()) {
+				JsonNode userNode = iterator.next();
+				String userId = userNode.get("userId").asText().trim();
+				String course = userNode.get("course").asText().trim();// 课程名称
+				String institution = userNode.get("institution").asText().trim();// 开始日期
+				String instructionType = userNode.get("instructionType").asText().trim();// 结束日期
+				String lengthCode = userNode.get("lengthNav").get("externalCode").asText().trim();// 培训类型
+				String custom9 = userNode.get("custom9").asText().trim();// 培训地点
+				String custom1 = userNode.get("custom1").asText().trim();// 历时
+				String custom2 = userNode.get("custom2").asText().trim();// 培训结果
+				String custom3Code = userNode.get("custom3Nav").get("externalCode").asText().trim();// 是否有证书
+				String custom4 = userNode.get("custom4").asText().trim();// 培训服务期到期时间
+				String custom7 = userNode.get("custom7").asText().trim();// 备注
+			}
+		}
+	}
+
+	// 学历教育 Background_Education
+	public void saveOrUpdateBackgroundEducation(HttpHeaders headers, String personIds, String userIds) {
+		String url = "https://api15.sapsf.cn/odata/v2/Background_Education?$filter=userId in %s&$format=json";
+		url = String.format(url, personIds);
+		JsonNode node = requestService.getForObject(url, headers);
+		if (node != null) {
+			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
+			while (iterator.hasNext()) {
+				JsonNode userNode = iterator.next();
+				String userId = userNode.get("userId").asText().trim();
+				String startDate = userNode.get("startDate").asText().trim();// 开始日期
+				String endDate = userNode.get("endDate").asText().trim();// 结束日期
+				String school = userNode.get("school").asText().trim();// 院校
+				String major = userNode.get("major").asText().trim();// 专业
+				String degree = userNode.get("degree").asText().trim();// 学历
+				String custom1 = userNode.get("custom1").asText().trim();// 学位
+			}
+		}
+	}
+
+	// 证书 Background_Certificates
+	public void saveOrUpdateBackgroundCertificates(HttpHeaders headers, String personIds, String userIds) {
+		String url = "https://api15.sapsf.cn/odata/v2/Background_Certificates?$filter=userId in %s&$format=json";
+		url = String.format(url, personIds);
+		JsonNode node = requestService.getForObject(url, headers);
+		if (node != null) {
+			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
+			while (iterator.hasNext()) {
+				JsonNode userNode = iterator.next();
+				String userId = userNode.get("userId").asText().trim();
+				String name = userNode.get("name").asText().trim();// 证书/执照
+				String description = userNode.get("description").asText().trim();// 描述
+				String institution = userNode.get("institution").asText().trim();// 证书颁发机构
+				String startDate = userNode.get("startDate").asText().trim();// 证书颁发日期
+				String endDate = userNode.get("endDate").asText().trim();// 证书到期日期
+			}
+		}
+	}
+
+	// 语言能力 Background_Languages
+	public void saveOrUpdateBackgroundLanguages(HttpHeaders headers, String personIds, String userIds) {
+		String url = "https://api15.sapsf.cn/odata/v2/Background_Languages?$filter=userId in %s&$format=json&$expand=languageNav,speakingProfNav,readingProfNav,writingProfNav";
+		url = String.format(url, personIds);
+		JsonNode node = requestService.getForObject(url, headers);
+		if (node != null) {
+			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
+			while (iterator.hasNext()) {
+				JsonNode userNode = iterator.next();
+				String userId = userNode.get("userId").asText().trim();
+				String languageCode = userNode.get("languageNav").get("externalCode").asText().trim();// 语言
+				String speakingProfCode = userNode.get("speakingProfNav").asText().trim();// 口语能力
+				String readingProfCode = userNode.get("readingProfNav").asText().trim();// 阅读能力
+				String writingProfCode = userNode.get("writingProfNav").asText().trim();// 书写能力
+			}
+		}
+	}
+
+	// 绩效历史 TrendData_SysOverallPerformance
+	public void saveOrUpdateTrendDataSysOverallPerformance(HttpHeaders headers, String personIds, String userIds) {
+		String url = "https://api15.sapsf.cn/odata/v2/TrendData_SysOverallPerformance?$filter=userId in %s&$format=json";
+		url = String.format(url, personIds);
+		JsonNode node = requestService.getForObject(url, headers);
+		if (node != null) {
+			Iterator<JsonNode> iterator = node.get("d").get("results").elements();
+			while (iterator.hasNext()) {
+				JsonNode userNode = iterator.next();
+				String userId = userNode.get("userId").asText().trim();
+				String startDate = userNode.get("startDate").asText().trim(); // 起始日期
+				String endDate = userNode.get("endDate").asText().trim();// 结束日期
+				String module = userNode.get("module").asText().trim(); // 模块
+				String name = userNode.get("name").asText().trim(); // 名称
+				String description = userNode.get("description").asText().trim();// 描述
+			}
+		}
+	}
+}