Bläddra i källkod

Merge remote-tracking branch 'origin/master'

hanwenjie 5 år sedan
förälder
incheckning
c01250b2de
21 ändrade filer med 671 tillägg och 172 borttagningar
  1. 68 106
      code/sapparent/sapcms/src/main/resources/sap.sql
  2. 3 0
      code/sapparent/sapservice/src/main/java/org/fouram/core/plugin/weixin/cp/core/WXCpBase.java
  3. 2 5
      code/sapparent/sapservice/src/main/java/org/fouram/core/plugin/weixin/cp/core/WXCpMailList.java
  4. 26 0
      code/sapparent/sapservice/src/main/java/org/fouram/entity/SapCertificates.java
  5. 31 0
      code/sapparent/sapservice/src/main/java/org/fouram/entity/SapCourses.java
  6. 27 0
      code/sapparent/sapservice/src/main/java/org/fouram/entity/SapEducation.java
  7. 31 0
      code/sapparent/sapservice/src/main/java/org/fouram/entity/SapEmpEmployment.java
  8. 34 0
      code/sapparent/sapservice/src/main/java/org/fouram/entity/SapEmpJob.java
  9. 23 0
      code/sapparent/sapservice/src/main/java/org/fouram/entity/SapEmpJobRelationships.java
  10. 25 0
      code/sapparent/sapservice/src/main/java/org/fouram/entity/SapInsideWorkExperience.java
  11. 25 0
      code/sapparent/sapservice/src/main/java/org/fouram/entity/SapLanguages.java
  12. 30 0
      code/sapparent/sapservice/src/main/java/org/fouram/entity/SapOutsideWorkExperience.java
  13. 26 0
      code/sapparent/sapservice/src/main/java/org/fouram/entity/SapOverallPerformance.java
  14. 24 0
      code/sapparent/sapservice/src/main/java/org/fouram/entity/SapPerEmail.java
  15. 26 0
      code/sapparent/sapservice/src/main/java/org/fouram/entity/SapPerGlobalInfoCHN.java
  16. 24 0
      code/sapparent/sapservice/src/main/java/org/fouram/entity/SapPerNationalId.java
  17. 24 0
      code/sapparent/sapservice/src/main/java/org/fouram/entity/SapPerPerson.java
  18. 32 0
      code/sapparent/sapservice/src/main/java/org/fouram/entity/SapPerPersonal.java
  19. 24 0
      code/sapparent/sapservice/src/main/java/org/fouram/entity/SapPerPhone.java
  20. 23 0
      code/sapparent/sapservice/src/main/java/org/fouram/entity/SapPerSocialAccount.java
  21. 143 61
      code/sapparent/sapservice/src/main/java/org/fouram/service/SapReportService.java

+ 68 - 106
code/sapparent/sapcms/src/main/resources/sap.sql

@@ -1,142 +1,68 @@
-SET FOREIGN_KEY_CHECKS=0;
-
-DROP TABLE IF EXISTS `sap_user`;
-CREATE TABLE `sap_user` (
-  `userId` varchar(50) NOT NULL,
-  `personId` varchar(255) DEFAULT NULL,
-  `username` varchar(255) DEFAULT NULL,
-  `name` varchar(255) DEFAULT NULL,
-  `company` varchar(255) DEFAULT NULL,
-  `formatCompany` varchar(255) DEFAULT NULL,
-  `departName` varchar(255) DEFAULT NULL,
-  `formatDepartName` varchar(255) DEFAULT NULL,
-  `position` varchar(255) DEFAULT NULL,
-  `formatPosition` varchar(255) DEFAULT NULL,
-  `mobile` varchar(255) DEFAULT NULL,
-  `formatMobile` varchar(255) DEFAULT NULL,
-  `gender` varchar(255) DEFAULT NULL,
-  `email` varchar(255) DEFAULT NULL,
-  `sapJson` longtext,
-  `wxUserResult` varchar(500) DEFAULT NULL,
-  `createDate` datetime DEFAULT NULL,
-  PRIMARY KEY (`userId`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
-
-DROP TABLE IF EXISTS `sys_dictionary`;
-CREATE TABLE `sys_dictionary` (
-  `id` bigint(10) NOT NULL AUTO_INCREMENT,
-  `type` varchar(50) DEFAULT NULL,
-  `key` varchar(50) DEFAULT NULL,
-  `value` longtext,
-  `order_by` varchar(50) DEFAULT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4;
-
-INSERT INTO `sys_dictionary` VALUES ('1', 'index', 'company_name', 'SAP', '1', null);
-INSERT INTO `sys_dictionary` VALUES ('2', 'index', 'cms_name', '后台管理系统', '2', null);
-
-DROP TABLE IF EXISTS `sys_menu`;
-CREATE TABLE `sys_menu` (
-  `id` int(11) NOT NULL,
-  `name` varchar(50) DEFAULT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  `url` varchar(255) DEFAULT NULL,
-  `parent_id` varchar(50) DEFAULT NULL,
-  `order_by` int(11) DEFAULT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
-INSERT INTO `sys_menu` VALUES ('1', '系统管理', '系统管理', '', '0', '1');
-INSERT INTO `sys_menu` VALUES ('2', '系统用户管理', '系统用户管理', 'sysUser', '1', '1');
-INSERT INTO `sys_menu` VALUES ('3', '系统角色管理', '系统角色管理', 'sysRole', '1', '2');
-INSERT INTO `sys_menu` VALUES ('4', '系统菜单管理', '系统菜单管理', 'sysMenu', '1', '3');
-
-DROP TABLE IF EXISTS `sys_role`;
-CREATE TABLE `sys_role` (
-  `id` varchar(50) NOT NULL,
-  `name` varchar(50) DEFAULT NULL,
-  `description` varchar(500) DEFAULT NULL,
-  `query_flag` varchar(255) DEFAULT NULL,
-  `add_flag` varchar(255) DEFAULT NULL,
-  `update_flag` varchar(255) DEFAULT NULL,
-  `delete_flag` varchar(255) DEFAULT NULL,
-  `data_level` varchar(255) DEFAULT NULL,
-  `create_by` varchar(50) DEFAULT NULL,
-  `create_date` datetime DEFAULT NULL,
-  `update_by` varchar(50) DEFAULT NULL,
-  `update_date` datetime DEFAULT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
-INSERT INTO `sys_role` VALUES ('1', '系统管理员', '系统管理员', '1032222', '1032222', '1032222', '1032254', 'all', '', '2017-04-15 21:16:08', '1', '2017-05-16 13:36:22');
-
-DROP TABLE IF EXISTS `sys_role_menu`;
-CREATE TABLE `sys_role_menu` (
-  `id` varchar(50) NOT NULL,
-  `role_id` varchar(50) DEFAULT NULL,
-  `menu_id` varchar(50) DEFAULT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
-
-DROP TABLE IF EXISTS `sys_user`;
-CREATE TABLE `sys_user` (
-  `id` varchar(50) NOT NULL,
-  `user_name` varchar(50) DEFAULT NULL,
-  `real_name` varchar(50) DEFAULT NULL,
-  `password` varchar(50) DEFAULT NULL,
-  `sex` varchar(50) DEFAULT NULL,
-  `province_code` varchar(50) DEFAULT NULL,
-  `city_code` varchar(50) DEFAULT NULL,
-  `phone` varchar(50) DEFAULT NULL,
-  `email` varchar(50) DEFAULT NULL,
-  `status` varchar(50) DEFAULT NULL,
-  `create_by` varchar(50) DEFAULT NULL,
-  `create_date` datetime DEFAULT NULL,
-  `update_by` varchar(50) DEFAULT NULL,
-  `update_date` datetime DEFAULT NULL,
-  `last_login` datetime DEFAULT NULL,
-  `role_id` varchar(50) DEFAULT NULL,
-  `del_flag` tinyint(1) DEFAULT '0',
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-
-INSERT INTO `sys_user` VALUES ('1', 'admin', '管理员', '74d7c8a3426acbbfabfdc457ab44d14332388033', '1', '', '', '1234567891', '111@111.com', 'QIYONG', '1', '2017-04-11 14:47:24', '1', '2017-04-19 15:50:42', '2019-09-17 15:48:08', '1', '0');
+/*
+Navicat MySQL Data Transfer
+
+Source Server         : localhost
+Source Server Version : 50538
+Source Host           : localhost:3306
+Source Database       : sap
+
+Target Server Type    : MYSQL
+Target Server Version : 50538
+File Encoding         : 65001
+
+Date: 2020-01-19 18:13:11
+*/
+
+SET FOREIGN_KEY_CHECKS=0;
+
+-- ----------------------------
+-- Table structure for sap_org
+-- ----------------------------
+DROP TABLE IF EXISTS `sap_org`;
+CREATE TABLE `sap_org` (
+  `id` varchar(255) NOT NULL,
+  `parentId` varchar(255) DEFAULT NULL,
+  `sapCode` varchar(255) DEFAULT NULL,
+  `sapName` varchar(255) DEFAULT NULL,
+  `level` varchar(255) DEFAULT NULL,
+  `wxDepartId` int(10) DEFAULT NULL,
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+-- ----------------------------
+-- Table structure for sap_user
+-- ----------------------------
+DROP TABLE IF EXISTS `sap_user`;
+CREATE TABLE `sap_user` (
+  `userId` varchar(50) NOT NULL,
+  `personId` varchar(255) DEFAULT NULL,
+  `username` varchar(255) DEFAULT NULL,
+  `name` varchar(255) DEFAULT NULL,
+  `firstOrgId` varchar(255) DEFAULT NULL,
+  `secondOrgId` varchar(255) DEFAULT NULL,
+  `thirdOrgId` varchar(255) DEFAULT NULL,
+  `fourthOrgId` varchar(255) DEFAULT NULL,
+  `firstOrgName` varchar(255) DEFAULT NULL,
+  `secondOrgName` varchar(255) DEFAULT NULL,
+  `thirdOrgName` varchar(255) DEFAULT NULL,
+  `fourthOrgName` varchar(255) DEFAULT NULL,
+  `firstOrgWxDepartId` int(10) DEFAULT NULL,
+  `secondOrgWxDepartId` int(10) DEFAULT NULL,
+  `thirdOrgWxDepartId` int(10) DEFAULT NULL,
+  `fourthOrgWxDepartId` int(10) DEFAULT NULL,
+  `position` varchar(255) DEFAULT NULL,
+  `formatPosition` varchar(255) DEFAULT NULL,
+  `mobile` varchar(255) DEFAULT NULL,
+  `formatMobile` varchar(255) DEFAULT NULL,
+  `businessPhone` varchar(255) DEFAULT NULL,
+  `formatBusinessPhone` varchar(255) DEFAULT NULL,
+  `gender` varchar(255) DEFAULT NULL,
+  `email` varchar(255) DEFAULT NULL,
+  `formatEmail` varchar(255) DEFAULT NULL,
+  `isPrimary` int(1) DEFAULT NULL,
+  `result` varchar(500) DEFAULT NULL,
+  `delFlag` varchar(255) DEFAULT NULL,
+  `createDate` datetime DEFAULT NULL,
+  `sortNumber` int(10) DEFAULT NULL,
+  PRIMARY KEY (`userId`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

+ 3 - 0
code/sapparent/sapservice/src/main/java/org/fouram/core/plugin/weixin/cp/core/WXCpBase.java

@@ -23,6 +23,7 @@ public class WXCpBase {
 	public static final WxCpService service = new WxCpServiceImpl();
 	public static final WxCpUserService userService;
 	public static final WxCpOAuth2Service oauth2Service;
+	public static final WxCpDepartmentService departService;
 	static {
 		WxCpDefaultConfigImpl configStorage = new WxCpDefaultConfigImpl();
 		configStorage.setCorpId(ConfConfig.getConfigString("wxCp.corpId"));
@@ -31,6 +32,8 @@ public class WXCpBase {
 		service.setWxCpConfigStorage(configStorage);
 		// 初始化service
 		userService = new WxCpUserServiceImpl(service);
+		// 初始化部门service
+		departService = new WxCpDepartmentServiceImpl(service);
 		//授权服务
 		oauth2Service= new WxCpOAuth2ServiceImpl(service);
 	}

+ 2 - 5
code/sapparent/sapservice/src/main/java/org/fouram/core/plugin/weixin/cp/core/WXCpMailList.java

@@ -1,15 +1,12 @@
 package org.fouram.core.plugin.weixin.cp.core;
 
-import me.chanjar.weixin.cp.api.WxCpDepartmentService;
+import org.fouram.core.util.ConfConfig;
+
 import me.chanjar.weixin.cp.api.WxCpOAuth2Service;
 import me.chanjar.weixin.cp.api.WxCpService;
-import me.chanjar.weixin.cp.api.WxCpUserService;
-import me.chanjar.weixin.cp.api.impl.WxCpDepartmentServiceImpl;
 import me.chanjar.weixin.cp.api.impl.WxCpOAuth2ServiceImpl;
 import me.chanjar.weixin.cp.api.impl.WxCpServiceImpl;
-import me.chanjar.weixin.cp.api.impl.WxCpUserServiceImpl;
 import me.chanjar.weixin.cp.config.impl.WxCpDefaultConfigImpl;
-import org.fouram.core.util.ConfConfig;
 
 /**
  * 企业微信工具类

+ 26 - 0
code/sapparent/sapservice/src/main/java/org/fouram/entity/SapCertificates.java

@@ -0,0 +1,26 @@
+package org.fouram.entity;
+
+import java.io.Serializable;
+
+import org.apache.ibatis.type.Alias;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Alias(value = "SapCertificates")
+public class SapCertificates implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	private String userId;
+	private String name;// 证书/执照
+	private String description;// 描述
+	private String institution;// 证书颁发机构
+	private String startDate;// 证书颁发日期
+	private String endDate;// 证书到期日期
+}

+ 31 - 0
code/sapparent/sapservice/src/main/java/org/fouram/entity/SapCourses.java

@@ -0,0 +1,31 @@
+package org.fouram.entity;
+
+import java.io.Serializable;
+
+import org.apache.ibatis.type.Alias;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Alias(value = "SapCourses")
+public class SapCourses implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	private String userId;
+	private String course;// 课程名称
+	private String institution;// 开始日期
+	private String instructionType;// 结束日期
+	private String lengthCode;// 培训类型
+	private String place;// 培训地点
+	private String duration;// 历时
+	private String result;// 培训结果
+	private String certificateOrNot;// 是否有证书
+	private String dueTime;// 培训服务期到期时间
+	private String remark;// 备注
+}

+ 27 - 0
code/sapparent/sapservice/src/main/java/org/fouram/entity/SapEducation.java

@@ -0,0 +1,27 @@
+package org.fouram.entity;
+
+import java.io.Serializable;
+
+import org.apache.ibatis.type.Alias;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Alias(value = "SapEducation")
+public class SapEducation implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	private String userId;
+	private String startDate;// 开始日期
+	private String endDate;// 结束日期
+	private String school;// 院校
+	private String major;// 专业
+	private String degree;// 学历
+	private String qualification;// 学位
+}

+ 31 - 0
code/sapparent/sapservice/src/main/java/org/fouram/entity/SapEmpEmployment.java

@@ -0,0 +1,31 @@
+package org.fouram.entity;
+
+import java.io.Serializable;
+
+import org.apache.ibatis.type.Alias;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Alias(value = "SapEmpEmployment")
+public class SapEmpEmployment implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	private String personId;
+	private String startDate;// 最近一次入职日期
+	private String firstDateWorked;// 首次工作日期
+	private String originalStartDate;// 进入集团日期
+	private String socialServiceAge;// 社会工龄
+	private String seniority;// 司龄(最近入职)
+	private String endDate;// 离职日期
+	private String okToRehire;// 可以再雇佣
+	private String salaryEndDate;// 最后结薪日期
+	private String benefitsEndDate;// 福利结算日期
+	private String leavingReasonCode;// 离职详细原因
+}

+ 34 - 0
code/sapparent/sapservice/src/main/java/org/fouram/entity/SapEmpJob.java

@@ -0,0 +1,34 @@
+package org.fouram.entity;
+
+import java.io.Serializable;
+
+import org.apache.ibatis.type.Alias;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Alias(value = "SapEmpJob")
+public class SapEmpJob implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	private String userId;
+	private String positionName;// 职位
+	private String positionEntryDate;// 就职日期
+	private String companyName;// 公司
+	private String businessUnitName;// 业务单元
+	private String divisionName;// 部门
+	private String departmentName;// 团队
+	private String teamName;// 小组
+	private String locationName;// 工作地点
+	private String managerId;// 直线经理
+	private String jobCodeName;// 职务分类
+	private String jobTitle;// 标准职务名称
+	private String rank;// 职级
+	private String managementOrNot;// 是否管理层
+}

+ 23 - 0
code/sapparent/sapservice/src/main/java/org/fouram/entity/SapEmpJobRelationships.java

@@ -0,0 +1,23 @@
+package org.fouram.entity;
+
+import java.io.Serializable;
+
+import org.apache.ibatis.type.Alias;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Alias(value = "SapEmpJobRelationships")
+public class SapEmpJobRelationships implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	private String userId;
+	private String relationshipTypeCode;// 关系类型
+	private String relUserName;// 姓名
+}

+ 25 - 0
code/sapparent/sapservice/src/main/java/org/fouram/entity/SapInsideWorkExperience.java

@@ -0,0 +1,25 @@
+package org.fouram.entity;
+
+import java.io.Serializable;
+
+import org.apache.ibatis.type.Alias;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Alias(value = "SapInsideWorkExperience")
+public class SapInsideWorkExperience implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	private String userId;
+	private String startDate;// 开始日期
+	private String endDate;// 结束日期
+	private String title;// 职务
+	private String department;// 部门
+}

+ 25 - 0
code/sapparent/sapservice/src/main/java/org/fouram/entity/SapLanguages.java

@@ -0,0 +1,25 @@
+package org.fouram.entity;
+
+import java.io.Serializable;
+
+import org.apache.ibatis.type.Alias;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Alias(value = "SapLanguages")
+public class SapLanguages implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	private String userId;
+	private String languageCode;// 语言
+	private String speakingProfCode;// 口语能力
+	private String readingProfCode;// 阅读能力
+	private String writingProfCode;// 书写能力
+}

+ 30 - 0
code/sapparent/sapservice/src/main/java/org/fouram/entity/SapOutsideWorkExperience.java

@@ -0,0 +1,30 @@
+package org.fouram.entity;
+
+import java.io.Serializable;
+
+import org.apache.ibatis.type.Alias;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Alias(value = "SapOutsideWorkExperience")
+public class SapOutsideWorkExperience implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	private String userId;
+	private String startDate; // 开始日期
+	private String endDate;// 结束日期
+	private String employer;// 曾工作公司名称
+	private String businessType;// 公司所在地
+	private String department;// 所在部门
+	private String position;// 职位
+	private String leavingReason;// 离职原因
+	private String immediateSupervisorName;// 直接上司姓名
+	private String contactInformation;// 联系方式
+}

+ 26 - 0
code/sapparent/sapservice/src/main/java/org/fouram/entity/SapOverallPerformance.java

@@ -0,0 +1,26 @@
+package org.fouram.entity;
+
+import java.io.Serializable;
+
+import org.apache.ibatis.type.Alias;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Alias(value = "SapOverallPerformance")
+public class SapOverallPerformance implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	private String userId;
+	private String startDate;// 起始日期
+	private String endDate;// 结束日期
+	private String module;// 模块
+	private String name ;// 名称
+	private String description;// 描述
+}

+ 24 - 0
code/sapparent/sapservice/src/main/java/org/fouram/entity/SapPerEmail.java

@@ -0,0 +1,24 @@
+package org.fouram.entity;
+
+import java.io.Serializable;
+
+import org.apache.ibatis.type.Alias;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Alias(value = "SapPerEmail")
+public class SapPerEmail implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	private String personId;
+	private String emailTypeCode;// 电子邮件类型
+	private String emailAddress;// 电子邮件地址
+	private String isPrimary;// 主要
+}

+ 26 - 0
code/sapparent/sapservice/src/main/java/org/fouram/entity/SapPerGlobalInfoCHN.java

@@ -0,0 +1,26 @@
+package org.fouram.entity;
+
+import java.io.Serializable;
+
+import org.apache.ibatis.type.Alias;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Alias(value = "SapPerGlobalInfoCHN")
+public class SapPerGlobalInfoCHN implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	private String personId;
+	private String householdRegistrationType;// 户口类型
+	private String nation;// 民族
+	private String politicalOutlook;// 政治面貌
+	private String orgRelationshipLocation;// 组织关系所在地
+	private String socialSecurityLocation;// 社保所在地
+}

+ 24 - 0
code/sapparent/sapservice/src/main/java/org/fouram/entity/SapPerNationalId.java

@@ -0,0 +1,24 @@
+package org.fouram.entity;
+
+import java.io.Serializable;
+
+import org.apache.ibatis.type.Alias;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Alias(value = "SapPerNationalId")
+public class SapPerNationalId implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	private String personId;
+	private String countryName;// 国家/地区
+	private String cardType;// 国民身份证类型
+	private String nationalId;// 国民身份证
+}

+ 24 - 0
code/sapparent/sapservice/src/main/java/org/fouram/entity/SapPerPerson.java

@@ -0,0 +1,24 @@
+package org.fouram.entity;
+
+import java.io.Serializable;
+
+import org.apache.ibatis.type.Alias;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Alias(value = "SapPerPerson")
+public class SapPerPerson implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	private String personId;// 员工号
+	private String dateOfBirth;// 出生日期
+	private String placeOfBirth;// 籍贯
+	private String education;// 最高学历
+}

+ 32 - 0
code/sapparent/sapservice/src/main/java/org/fouram/entity/SapPerPersonal.java

@@ -0,0 +1,32 @@
+package org.fouram.entity;
+
+import java.io.Serializable;
+
+import org.apache.ibatis.type.Alias;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Alias(value = "SapPerPersonal")
+public class SapPerPersonal implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	private String personId;
+	private String firstName;// 名字
+	private String lastName;// 姓氏
+	private String displayName;// 英文全名
+	private String formalName;// 全名
+	private String nationality;// 国籍
+	private String gender;// 性别
+	private String maritalStatusCode;// 婚姻状况
+	private String firstNameAlt1;// 英文名
+	private String lastNameAlt1;// 英文姓
+	private String firstNameAlt2;// 拼音名
+	private String lastNameAlt2;// 拼音姓
+}

+ 24 - 0
code/sapparent/sapservice/src/main/java/org/fouram/entity/SapPerPhone.java

@@ -0,0 +1,24 @@
+package org.fouram.entity;
+
+import java.io.Serializable;
+
+import org.apache.ibatis.type.Alias;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Alias(value = "SapPerPhone")
+public class SapPerPhone implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	private String personId;
+	private String phoneTypeCode;// 电话类型
+	private String phoneNumber;// 电话号码
+	private String isPrimary;// 主要
+}

+ 23 - 0
code/sapparent/sapservice/src/main/java/org/fouram/entity/SapPerSocialAccount.java

@@ -0,0 +1,23 @@
+package org.fouram.entity;
+
+import java.io.Serializable;
+
+import org.apache.ibatis.type.Alias;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Alias(value = "SapPerSocialAccount")
+public class SapPerSocialAccount implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	private String personId;// 员工号
+	private String domainCode;// 微信
+	private String imId;// 微信号
+}

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

@@ -5,6 +5,23 @@ import java.util.List;
 
 import org.fouram.core.base.service.BaseService;
 import org.fouram.core.base.service.RequestService;
+import org.fouram.entity.SapCertificates;
+import org.fouram.entity.SapCourses;
+import org.fouram.entity.SapEducation;
+import org.fouram.entity.SapEmpEmployment;
+import org.fouram.entity.SapEmpJob;
+import org.fouram.entity.SapEmpJobRelationships;
+import org.fouram.entity.SapInsideWorkExperience;
+import org.fouram.entity.SapLanguages;
+import org.fouram.entity.SapOutsideWorkExperience;
+import org.fouram.entity.SapOverallPerformance;
+import org.fouram.entity.SapPerEmail;
+import org.fouram.entity.SapPerGlobalInfoCHN;
+import org.fouram.entity.SapPerNationalId;
+import org.fouram.entity.SapPerPerson;
+import org.fouram.entity.SapPerPersonal;
+import org.fouram.entity.SapPerPhone;
+import org.fouram.entity.SapPerSocialAccount;
 import org.fouram.entity.SapUser;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpHeaders;
@@ -62,10 +79,13 @@ public class SapReportService extends BaseService {
 				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();// 最高学历
+				String education = userNode.get("customString1Nav").get("externalCode").asText().trim();// 最高学历
+				SapPerPerson entity = SapPerPerson.builder().personId(personId).dateOfBirth(dateOfBirth)
+						.placeOfBirth(placeOfBirth).education(education).build();
+				System.out.println(entity);
 			}
 		}
-		
+
 		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);
@@ -85,6 +105,11 @@ public class SapReportService extends BaseService {
 				String lastNameAlt1 = userNode.get("lastNameAlt1").asText().trim();// 英文姓
 				String firstNameAlt2 = userNode.get("firstNameAlt2").asText().trim();// 拼音名
 				String lastNameAlt2 = userNode.get("lastNameAlt2").asText().trim();// 拼音姓
+				SapPerPersonal entity = SapPerPersonal.builder().personId(personId).firstName(firstName)
+						.lastName(lastName).displayName(displayName).formalName(formalName).nationality(nationality)
+						.gender(gender).maritalStatusCode(maritalStatusCode).firstNameAlt1(firstNameAlt1)
+						.lastNameAlt1(lastNameAlt1).firstNameAlt2(firstNameAlt2).lastNameAlt2(lastNameAlt2).build();
+				System.out.println(entity);
 			}
 		}
 	}
@@ -99,11 +124,17 @@ public class SapReportService extends BaseService {
 			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();// 社保所在地
+				String householdRegistrationType = userNode.get("genericNumber1Nav").get("externalCode").asText()
+						.trim();// 户口类型
+				String nation = userNode.get("genericNumber4Nav").get("externalCode").asText().trim();// 民族
+				String politicalOutlook = userNode.get("customString6Nav").get("externalCode").asText().trim();// 政治面貌
+				String orgRelationshipLocation = userNode.get("customString1").asText().trim();// 组织关系所在地
+				String socialSecurityLocation = userNode.get("customString2").asText().trim();// 社保所在地
+				SapPerGlobalInfoCHN entity = SapPerGlobalInfoCHN.builder().personId(personId)
+						.householdRegistrationType(householdRegistrationType).nation(nation)
+						.politicalOutlook(politicalOutlook).orgRelationshipLocation(orgRelationshipLocation)
+						.socialSecurityLocation(socialSecurityLocation).build();
+				System.out.println(entity);
 			}
 		}
 	}
@@ -118,9 +149,12 @@ public class SapReportService extends BaseService {
 			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();// 国民身份证 
+				String countryName = userNode.get("countryNav").get("territoryName").asText().trim();// 国家/地区
+				String cardType = userNode.get("cardType").asText().trim();// 国民身份证类型
+				String nationalId = userNode.get("nationalId").asText().trim();// 国民身份证
+				SapPerNationalId entity = SapPerNationalId.builder().personId(personId).countryName(countryName)
+						.cardType(cardType).nationalId(nationalId).build();
+				System.out.println(entity);
 			}
 		}
 	}
@@ -135,9 +169,12 @@ public class SapReportService extends BaseService {
 			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();// 主要 
+				String emailTypeCode = userNode.get("emailTypeNav").get("externalCode").asText().trim();// 电子邮件类型
+				String emailAddress = userNode.get("emailAddress").asText().trim();// 电子邮件地址
+				String isPrimary = userNode.get("isPrimary").asText().trim();// 主要
+				SapPerEmail entity = SapPerEmail.builder().personId(personId).emailTypeCode(emailTypeCode)
+						.emailAddress(emailAddress).isPrimary(isPrimary).build();
+				System.out.println(entity);
 			}
 		}
 
@@ -153,9 +190,12 @@ public class SapReportService extends BaseService {
 			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();//主要	
+				String phoneTypeCode = userNode.get("phoneTypeNav").get("externalCode").asText().trim();// 电话类型
+				String phoneNumber = userNode.get("phoneNumber").asText().trim();// 电话号码
+				String isPrimary = userNode.get("isPrimary").asText().trim();// 主要
+				SapPerPhone entity = SapPerPhone.builder().personId(personId).phoneNumber(phoneNumber)
+						.phoneTypeCode(phoneTypeCode).isPrimary(isPrimary).build();
+				System.out.println(entity);
 			}
 		}
 	}
@@ -170,8 +210,11 @@ public class SapReportService extends BaseService {
 			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();//微信号
+				String domainCode = userNode.get("domainNav").get("externalCode").asText().trim();// 微信
+				String imId = userNode.get("imId").asText().trim();// 微信号
+				SapPerSocialAccount entity = SapPerSocialAccount.builder().personId(personId).domainCode(domainCode)
+						.imId(imId).build();
+				System.out.println(entity);
 			}
 		}
 	}
@@ -186,28 +229,34 @@ public class SapReportService extends BaseService {
 			while (iterator.hasNext()) {
 				JsonNode userNode = iterator.next();
 				String personId = userNode.get("personIdExternal").asText().trim();
-				//最近一次入职日期
-				//首次工作日期
-				//进入集团日期
-				//公司
-				//司龄计算日
-				//社会工龄
-				//司龄(最近入职)
-				//离职日期
-				//离职原因
-				//可以再雇佣
-				//工资单结束日期
-				//最后工作日期
-				//最后结薪日期
-				//福利结算日期
-				//离职详细原因
+				String startDate = userNode.get("startDate").asText().trim();// 最近一次入职日期
+				String firstDateWorked = userNode.get("firstDateWorked").asText().trim();// 首次工作日期
+				String originalStartDate = userNode.get("originalStartDate").asText().trim();// 进入集团日期
+				// TODO 司龄计算日
+				String socialServiceAge = userNode.get("customDouble1").asText().trim();// 社会工龄
+				String seniority = userNode.get("customDouble2").asText().trim();// 司龄(最近入职)
+				String endDate = userNode.get("endDate").asText().trim();// 离职日期
+				// TODO 离职原因
+				String okToRehire = userNode.get("okToRehire").asText().trim();// 可以再雇佣
+				// TODO 工资单结束日期
+				// TODO 最后工作日期
+				String salaryEndDate = userNode.get("salaryEndDate").asText().trim();// 最后结薪日期
+				String benefitsEndDate = userNode.get("benefitsEndDate").asText().trim();// 福利结算日期
+				String leavingReasonCode = userNode.get("customString16Nav").get("externalCode").asText().trim();// 离职详细原因
+				SapEmpEmployment entity = SapEmpEmployment.builder().personId(personId).startDate(startDate)
+						.firstDateWorked(firstDateWorked).originalStartDate(originalStartDate)
+						.socialServiceAge(socialServiceAge).seniority(seniority).endDate(endDate).okToRehire(okToRehire)
+						.salaryEndDate(salaryEndDate).benefitsEndDate(benefitsEndDate)
+						.leavingReasonCode(leavingReasonCode).build();
+				System.out.println(entity);
 			}
 		}
 	}
 
 	// 组织以及职位信息 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";
+		String url = "https://api15.sapsf.cn/odata/v2/EmpJob?$filter=userId in %s&$format=json"
+				+ "&$expand=positionNav,companyNav,divisionNav,departmentNav,customString19Nav,locationNav,jobCodeNav,customString2Nav,customString4Nav";
 		url = String.format(url, personIds);
 		JsonNode node = requestService.getForObject(url, headers);
 		if (node != null) {
@@ -215,23 +264,27 @@ public class SapReportService extends BaseService {
 			while (iterator.hasNext()) {
 				JsonNode userNode = iterator.next();
 				String userId = userNode.get("userId").asText().trim();
-				String jobTitle = userNode.get("jobTitle").asText().trim();// 职位
+				String positionName = userNode.get("positionNav").get("externalName_zh_CN").asText().trim();// 职位
 				String positionEntryDate = userNode.get("positionEntryDate").asText().trim();// 就职日期
-				String personId = userNode.get("personIdExternal").asText().trim();// 在职时间
+				// TODO 在职时间
 				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();// 是否管理层
+				String businessUnitName = userNode.get("businessUnitNav").get("name").asText().trim();// 业务单元
+				String divisionName = userNode.get("divisionNav").get("name").asText().trim();// 部门
+				String departmentName = userNode.get("departmentNav").get("name").asText().trim();// 团队
+				String teamName = userNode.get("customString19Nav").get("externalName_zh_CN").asText().trim();// 小组
+				String locationName = userNode.get("locationNav").get("name").asText().trim();// 工作地点
+				String managerId = userNode.get("managerId").asText().trim();// 直线经理
+				String jobCodeName = userNode.get("jobCodeNav").get("name").asText().trim();// 职务分类
+				String jobTitle = userNode.get("jobTitle").asText().trim();// 标准职务名称
+				// TODO 员工性质
+				String rank = userNode.get("customString2Nav").get("externalCode").asText().trim();// 职级
+				String managementOrNot = userNode.get("customString4Nav").get("externalCode").asText().trim();// 是否管理层
+				SapEmpJob entity = SapEmpJob.builder().userId(userId).positionName(positionName)
+						.positionEntryDate(positionEntryDate).companyName(companyName)
+						.businessUnitName(businessUnitName).divisionName(divisionName).departmentName(departmentName)
+						.teamName(teamName).locationName(locationName).managerId(managerId).jobCodeName(jobCodeName)
+						.jobTitle(jobTitle).rank(rank).managementOrNot(managementOrNot).build();
+				System.out.println(entity);
 			}
 		}
 	}
@@ -249,6 +302,9 @@ public class SapReportService extends BaseService {
 				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();// 姓名
+				SapEmpJobRelationships entity = SapEmpJobRelationships.builder().userId(userId)
+						.relationshipTypeCode(relationshipTypeCode).relUserName(relUserName).build();
+				System.out.println(entity);
 			}
 		}
 	}
@@ -267,11 +323,17 @@ public class SapReportService extends BaseService {
 				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();// 联系方式
+				String department = userNode.get("startTitle").asText().trim();// 所在部门
+				String position = userNode.get("custom1").asText().trim();// 职位
+				String leavingReason = userNode.get("custom2").asText().trim();// 离职原因
+				String immediateSupervisorName = userNode.get("custom3").asText().trim();// 直接上司姓名
+				String contactInformation = userNode.get("custom4").asText().trim();// 联系方式
+				SapOutsideWorkExperience entity = SapOutsideWorkExperience.builder().userId(userId).startDate(startDate)
+						.endDate(endDate).employer(employer).businessType(businessType).department(department)
+						.position(position).leavingReason(leavingReason)
+						.immediateSupervisorName(immediateSupervisorName).contactInformation(contactInformation)
+						.build();
+				System.out.println(entity);
 			}
 		}
 	}
@@ -290,6 +352,9 @@ public class SapReportService extends BaseService {
 				String endDate = userNode.get("endDate").asText().trim();// 结束日期
 				String title = userNode.get("title").asText().trim();// 职务
 				String department = userNode.get("department").asText().trim();// 部门
+				SapInsideWorkExperience entity = SapInsideWorkExperience.builder().userId(userId).startDate(startDate)
+						.endDate(endDate).title(title).department(department).build();
+				System.out.println(entity);
 			}
 		}
 	}
@@ -308,12 +373,16 @@ public class SapReportService extends BaseService {
 				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();// 备注
+				String place = userNode.get("custom9").asText().trim();// 培训地点
+				String duration = userNode.get("custom1").asText().trim();// 历时
+				String result = userNode.get("custom2").asText().trim();// 培训结果
+				String certificateOrNot = userNode.get("custom3Nav").get("externalCode").asText().trim();// 是否有证书
+				String dueTime = userNode.get("custom4").asText().trim();// 培训服务期到期时间
+				String remark = userNode.get("custom7").asText().trim();// 备注
+				SapCourses entity = SapCourses.builder().userId(userId).course(course).institution(institution)
+						.instructionType(instructionType).lengthCode(lengthCode).place(place).duration(duration)
+						.result(result).certificateOrNot(certificateOrNot).dueTime(dueTime).remark(remark).build();
+				System.out.println(entity);
 			}
 		}
 	}
@@ -333,7 +402,10 @@ public class SapReportService extends BaseService {
 				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();// 学位
+				String qualification = userNode.get("custom1").asText().trim();// 学位
+				SapEducation entity = SapEducation.builder().userId(userId).startDate(startDate).endDate(endDate)
+						.school(school).major(major).degree(degree).qualification(qualification).build();
+				System.out.println(entity);
 			}
 		}
 	}
@@ -353,6 +425,9 @@ public class SapReportService extends BaseService {
 				String institution = userNode.get("institution").asText().trim();// 证书颁发机构
 				String startDate = userNode.get("startDate").asText().trim();// 证书颁发日期
 				String endDate = userNode.get("endDate").asText().trim();// 证书到期日期
+				SapCertificates entity = SapCertificates.builder().userId(userId).name(name).description(description)
+						.institution(institution).startDate(startDate).endDate(endDate).build();
+				System.out.println(entity);
 			}
 		}
 	}
@@ -371,6 +446,10 @@ public class SapReportService extends BaseService {
 				String speakingProfCode = userNode.get("speakingProfNav").asText().trim();// 口语能力
 				String readingProfCode = userNode.get("readingProfNav").asText().trim();// 阅读能力
 				String writingProfCode = userNode.get("writingProfNav").asText().trim();// 书写能力
+				SapLanguages entity = SapLanguages.builder().userId(userId).languageCode(languageCode)
+						.speakingProfCode(speakingProfCode).readingProfCode(readingProfCode)
+						.writingProfCode(writingProfCode).build();
+				System.out.println(entity);
 			}
 		}
 	}
@@ -390,6 +469,9 @@ public class SapReportService extends BaseService {
 				String module = userNode.get("module").asText().trim(); // 模块
 				String name = userNode.get("name").asText().trim(); // 名称
 				String description = userNode.get("description").asText().trim();// 描述
+				SapOverallPerformance entity = SapOverallPerformance.builder().userId(userId).startDate(startDate)
+						.endDate(endDate).module(module).name(name).description(description).build();
+				System.out.println(entity);
 			}
 		}
 	}