同步测试,修改org表
This commit is contained in:
@@ -132,7 +132,17 @@ huawei.OBS.fileMaxSize=10 #\u6587\u4EF6\u4E0A\u4F20\u6700\u5927M\u6570
|
|||||||
|
|
||||||
logging.level.com.adc: debug
|
logging.level.com.adc: debug
|
||||||
|
|
||||||
# ==== IAM????
|
# CMP???????????
|
||||||
iam.url=https://iamuat.faw-vw.com/
|
cmp.url=https://cmp-uat.faw-vw.in/employee/v1/
|
||||||
iam.appkey=xxxx
|
cmp.appkey=TI062S001Uat
|
||||||
iam.appSecret=xxx
|
cmp.appSecret=ee493505524d4f628e52058f4df3a4fb
|
||||||
|
|
||||||
|
# CMP???????????
|
||||||
|
#cmp.url=https://cmp.faw-vw.in/employee/v1/
|
||||||
|
#cmp.appkey=TI062S001Uat
|
||||||
|
#cmp.appSecret=ee493505524d4f628e52058f4df3a4fb
|
||||||
|
|
||||||
|
# SSO????
|
||||||
|
sso.url=https://iamuat.faw-vw.com/
|
||||||
|
sso.clientId=43da19911e74a14dd5d9
|
||||||
|
sso.clientSecret=67da1e83183e854535cae9027cfbdb12cbc3
|
||||||
@@ -75,6 +75,4 @@ spring.activiti.database-schema-update=true
|
|||||||
# ????????:true-???????false-??
|
# ????????:true-???????false-??
|
||||||
spring.activiti.check-process-definitions=false
|
spring.activiti.check-process-definitions=false
|
||||||
|
|
||||||
iam.url=https://iamuat.faw-vw.com/
|
|
||||||
iam.appkey=1
|
|
||||||
iam.appSecret=1
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import cn.hutool.http.HttpRequest;
|
|||||||
import com.adc.da.sync.service.dao.mysql.SyncIAMLogDao;
|
import com.adc.da.sync.service.dao.mysql.SyncIAMLogDao;
|
||||||
import com.adc.da.sync.service.entity.SyncIAMLogEO;
|
import com.adc.da.sync.service.entity.SyncIAMLogEO;
|
||||||
import com.adc.da.sync.service.enums.SyncTypeEnum;
|
import com.adc.da.sync.service.enums.SyncTypeEnum;
|
||||||
|
import com.adc.da.sync.service.utils.SignUtils;
|
||||||
import com.adc.da.sys.constant.SysConstants;
|
import com.adc.da.sys.constant.SysConstants;
|
||||||
import com.adc.da.sys.constant.UserBelongEnum;
|
import com.adc.da.sys.constant.UserBelongEnum;
|
||||||
import com.adc.da.sys.entity.OrgEO;
|
import com.adc.da.sys.entity.OrgEO;
|
||||||
@@ -12,17 +13,19 @@ import com.adc.da.sys.entity.UserEO;
|
|||||||
import com.adc.da.sys.service.OrgEOService;
|
import com.adc.da.sys.service.OrgEOService;
|
||||||
import com.adc.da.sys.service.iservice.IUserEoService;
|
import com.adc.da.sys.service.iservice.IUserEoService;
|
||||||
import com.adc.da.sys.util.EncryptUtil;
|
import com.adc.da.sys.util.EncryptUtil;
|
||||||
|
import com.adc.da.sys.vo.iam.CmpOrgResult;
|
||||||
|
import com.adc.da.sys.vo.iam.CmpUserResult;
|
||||||
import com.adc.da.sys.vo.iam.OrgVoIAM;
|
import com.adc.da.sys.vo.iam.OrgVoIAM;
|
||||||
import com.adc.da.sys.vo.iam.OrgsShortVoIAM;
|
|
||||||
import com.adc.da.sys.vo.iam.UserVoIAM;
|
import com.adc.da.sys.vo.iam.UserVoIAM;
|
||||||
import com.adc.da.util.utils.GsonUtil;
|
import com.adc.da.util.utils.GsonUtil;
|
||||||
|
import com.adc.da.util.utils.StringUtils;
|
||||||
import com.auth0.jwt.JWT;
|
import com.auth0.jwt.JWT;
|
||||||
import com.auth0.jwt.algorithms.Algorithm;
|
import com.auth0.jwt.algorithms.Algorithm;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.http.HttpMethod;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
@@ -34,34 +37,26 @@ public class SyncIAMTimer {
|
|||||||
/**
|
/**
|
||||||
* IAM的前缀地址
|
* IAM的前缀地址
|
||||||
*/
|
*/
|
||||||
@Value("${iam.url}")
|
@Value("${cmp.url}")
|
||||||
private String iamUrl;
|
private String cmpUrl="https://cmp-uat.faw-vw.in/employee/v1/";
|
||||||
|
|
||||||
@Value("${iam.appkey}")
|
@Value("${cmp.appkey}")
|
||||||
private String appkey;
|
private String appkey = "TI062S001Uat";
|
||||||
|
|
||||||
@Value("${iam.appSecret}")
|
@Value("${cmp.appSecret}")
|
||||||
private String appSecret;
|
private String appSecret = "ee493505524d4f628e52058f4df3a4fb";
|
||||||
|
|
||||||
/**
|
private String xCustom = "Insight Library"; // 写死的
|
||||||
* 组织机构全量同步接口地址
|
|
||||||
*/
|
|
||||||
public static final String ORG_FULL_URL = "/esc-idm/api/v1/org/listAll";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 组织机构增量同步接口地址
|
* 组织机构增量同步接口地址
|
||||||
*/
|
*/
|
||||||
public static final String ORG_INCREMENT_URL = "/esc-idm/api/v1/org/list";
|
public static final String ORG_INCREMENT_URL = "/pageOrgs";
|
||||||
|
|
||||||
/**
|
|
||||||
* 用户全量同步接口地址
|
|
||||||
*/
|
|
||||||
public static final String USER_FULL_URL = "/esc-idm/api/v1/account/listAll";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户增量同步接口地址
|
* 用户增量同步接口地址
|
||||||
*/
|
*/
|
||||||
public static final String USER_INCREMENT_URL = "/esc-idm/api/v1/account/list";
|
public static final String USER_INCREMENT_URL = "/pageEmployees";
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
SyncIAMLogDao syncIAMLogDao;
|
SyncIAMLogDao syncIAMLogDao;
|
||||||
@@ -74,132 +69,81 @@ public class SyncIAMTimer {
|
|||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
SyncIAMTimer syncIAMTimer = new SyncIAMTimer();
|
SyncIAMTimer syncIAMTimer = new SyncIAMTimer();
|
||||||
syncIAMTimer.syncOrgFullData();
|
syncIAMTimer.syncOrgIncrData(1, 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 同步组织机构-全量数据并入库
|
* 同步组织机构-增量数据并入库
|
||||||
* @Param syncModel 同步模式
|
*
|
||||||
|
* @Param pageIndex 页码,默认为1,小于1按1处理
|
||||||
|
* @Param pageSize 每页条数,默认10,小于1按1处 于1000按1000处理
|
||||||
*/
|
*/
|
||||||
public void syncOrgFullData(){
|
public void syncOrgIncrData(int pageIndex, int pageSize){
|
||||||
String syncUrl = this.iamUrl + ORG_FULL_URL;
|
String syncUrl = this.cmpUrl + ORG_INCREMENT_URL + "?pageIndex=" + pageIndex + "&pageSize=" + pageSize;
|
||||||
String jwtToken = this.getJwtToken(this.appkey, this.appSecret);
|
|
||||||
|
|
||||||
Date syncStartTime = new Date();
|
String gmtDate = SignUtils.getGMTDate();
|
||||||
|
String sign = SignUtils.generate(HttpMethod.GET, syncUrl, this.xCustom, this.appkey, gmtDate, this.appSecret);
|
||||||
|
|
||||||
String orgDataStr = HttpRequest.post(syncUrl)
|
String orgDataStr = HttpRequest.get(syncUrl)
|
||||||
.header("Content-Type", "application/json")
|
.header("Content-Type", "application/json")
|
||||||
.header("Authorization", jwtToken)//头信息,多个头信息多次调用此方法即可
|
.header("Date", gmtDate)
|
||||||
|
.header("X-HMAC-ACCESS-KEY", this.appkey)
|
||||||
|
.header("X-HMAC-ALGORITHM", "hmac-sha256")
|
||||||
|
.header("X-HMAC-SIGNED-HEADERS", "x-custom")
|
||||||
|
.header("x-custom", this.xCustom)
|
||||||
|
.header("X-HMAC-SIGNATURE", sign)
|
||||||
.timeout(10 * 60 * 1000) //超时,毫秒
|
.timeout(10 * 60 * 1000) //超时,毫秒
|
||||||
.execute().body();
|
.execute().body();
|
||||||
|
|
||||||
List<OrgVoIAM> orgVoIAMList = GsonUtil.json2Collection(orgDataStr, OrgVoIAM.class);
|
|
||||||
|
|
||||||
// 同步的VO 转换成 数据库EO
|
CmpOrgResult cmpOrgResult = GsonUtil.json2T(orgDataStr, CmpOrgResult.class);
|
||||||
List<OrgEO> orgEOList = new ArrayList<>();
|
if (cmpOrgResult != null){
|
||||||
for (OrgVoIAM orgVoIAM : orgVoIAMList){
|
List<OrgVoIAM> orgVoIAMList = cmpOrgResult.getData();
|
||||||
OrgEO orgEO = this.transOrgIAMVoToOrgEO(orgVoIAM);
|
|
||||||
orgEOList.add(orgEO);
|
// 同步的VO 转换成 数据库EO
|
||||||
|
List<OrgEO> orgEOList = new ArrayList<>();
|
||||||
|
for (OrgVoIAM orgVoIAM : orgVoIAMList){
|
||||||
|
OrgEO orgEO = this.transOrgIAMVoToOrgEO(orgVoIAM);
|
||||||
|
orgEOList.add(orgEO);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.orgEOService.saveOrUpdateBatch(orgEOList);
|
||||||
|
|
||||||
|
this.addSyncLog(null, new Date(), SyncTypeEnum.ORG_INCREMENT_DATA.getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 以 部门编码 为主键,所以直接调整即可
|
|
||||||
this.orgEOService.saveOrUpdateBatch(orgEOList);
|
|
||||||
|
|
||||||
this.addSyncLog(null, syncStartTime, SyncTypeEnum.ORG_FULL_DATA.getValue());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 同步组织机构-增量数据并入库
|
* 同步组织机构-增量数据并入库
|
||||||
* @Param syncModel 同步模式
|
* @Param syncModel 同步模式
|
||||||
*/
|
*/
|
||||||
public void syncOrgIncrData(){
|
public void syncUserIncrData(int pageIndex, int pageSize, String enterTime){
|
||||||
String syncUrl = this.iamUrl + ORG_INCREMENT_URL;
|
String syncUrl = this.cmpUrl + USER_INCREMENT_URL + "?pageIndex=" + pageIndex + "&pageSize=" + pageSize;
|
||||||
String jwtToken = this.getJwtToken(appkey, appSecret);
|
if (StringUtils.isNotEmpty(enterTime)){
|
||||||
|
syncUrl += "&enterTime=" + enterTime;
|
||||||
Date syncStartTime = new Date();
|
|
||||||
|
|
||||||
Calendar c = Calendar.getInstance();
|
|
||||||
c.set(Calendar.HOUR_OF_DAY, (c.get(Calendar.HOUR_OF_DAY) - 24));//HOUR_OF_DAY 指一天中的小时
|
|
||||||
Long incrementStartTime = c.getTimeInMillis(); // 每天同步前一天的数据,需要当前时间往前诺一天
|
|
||||||
|
|
||||||
String orgDataStr = HttpRequest.post(syncUrl)
|
|
||||||
.header("Content-Type", "application/json")
|
|
||||||
.header("Authorization", jwtToken)//头信息,多个头信息多次调用此方法即可
|
|
||||||
.form("startTime", incrementStartTime)
|
|
||||||
.timeout(10 * 60 * 1000) //超时,毫秒
|
|
||||||
.execute().body();
|
|
||||||
|
|
||||||
List<OrgVoIAM> orgVoIAMList = GsonUtil.json2Collection(orgDataStr, OrgVoIAM.class);
|
|
||||||
|
|
||||||
// 同步的VO 转换成 数据库EO
|
|
||||||
List<OrgEO> orgEOList = new ArrayList<>();
|
|
||||||
for (OrgVoIAM orgVoIAM : orgVoIAMList){
|
|
||||||
OrgEO orgEO = this.transOrgIAMVoToOrgEO(orgVoIAM);
|
|
||||||
orgEOList.add(orgEO);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.orgEOService.saveOrUpdateBatch(orgEOList);
|
|
||||||
|
|
||||||
this.addSyncLog(null, syncStartTime, SyncTypeEnum.ORG_INCREMENT_DATA.getValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 同步用户-全量数据并入库
|
|
||||||
* @Param syncModel 同步模式
|
|
||||||
*/
|
|
||||||
public void syncUserFullData(){
|
|
||||||
String syncUrl = this.iamUrl + USER_FULL_URL;
|
|
||||||
String jwtToken = this.getJwtToken(appkey, appSecret);
|
String jwtToken = this.getJwtToken(appkey, appSecret);
|
||||||
|
|
||||||
Date syncStartTime = new Date();
|
|
||||||
|
|
||||||
String userDataStr = HttpRequest.post(syncUrl)
|
String userDataStr = HttpRequest.post(syncUrl)
|
||||||
.header("Content-Type", "application/json")
|
.header("Content-Type", "application/json")
|
||||||
.header("Authorization", jwtToken)//头信息,多个头信息多次调用此方法即可
|
.header("Authorization", jwtToken)//头信息,多个头信息多次调用此方法即可
|
||||||
.timeout(10 * 60 * 1000) //超时,毫秒
|
.timeout(10 * 60 * 1000) //超时,毫秒
|
||||||
.execute().body();
|
.execute().body();
|
||||||
|
|
||||||
List<UserVoIAM> userVoIAMList = GsonUtil.json2Collection(userDataStr, UserVoIAM.class);
|
CmpUserResult cmpUserResult = GsonUtil.json2T(userDataStr, CmpUserResult.class);
|
||||||
|
if (cmpUserResult != null){
|
||||||
|
List<UserVoIAM> userVoIAMList =cmpUserResult.getData();
|
||||||
|
|
||||||
// 同步的VO 转换成 数据库EO,并存库
|
// 同步的VO 转换成 数据库EO,并存库
|
||||||
for (UserVoIAM userVoIAM : userVoIAMList){
|
for (UserVoIAM userVoIAM : userVoIAMList){
|
||||||
UserEO userEO = this.transUserIAMVoToUserEO(userVoIAM);
|
UserEO userEO = this.transUserIAMVoToUserEO(userVoIAM);
|
||||||
this.iUserEoService.syncSaveOrUpdate(userEO);
|
this.iUserEoService.syncSaveOrUpdate(userEO);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.addSyncLog(null, new Date(), SyncTypeEnum.USER_INCREMENT_DATA.getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
this.addSyncLog(null, syncStartTime, SyncTypeEnum.ORG_FULL_DATA.getValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 同步组织机构-增量数据并入库
|
|
||||||
* @Param syncModel 同步模式
|
|
||||||
*/
|
|
||||||
public void syncUserIncrData(){
|
|
||||||
String syncUrl = this.iamUrl + USER_INCREMENT_URL;
|
|
||||||
String jwtToken = this.getJwtToken(appkey, appSecret);
|
|
||||||
|
|
||||||
Date syncStartTime = new Date();
|
|
||||||
|
|
||||||
Calendar c = Calendar.getInstance();
|
|
||||||
c.set(Calendar.HOUR_OF_DAY, (c.get(Calendar.HOUR_OF_DAY) - 24));//HOUR_OF_DAY 指一天中的小时
|
|
||||||
Long incrementStartTime = c.getTimeInMillis(); // 每天同步前一天的数据,需要当前时间往前诺一天
|
|
||||||
|
|
||||||
String userDataStr = HttpRequest.post(syncUrl)
|
|
||||||
.header("Content-Type", "application/json")
|
|
||||||
.header("Authorization", jwtToken)//头信息,多个头信息多次调用此方法即可
|
|
||||||
.form("startTime", incrementStartTime)
|
|
||||||
.timeout(10 * 60 * 1000) //超时,毫秒
|
|
||||||
.execute().body();
|
|
||||||
|
|
||||||
List<UserVoIAM> userVoIAMList = GsonUtil.json2Collection(userDataStr, UserVoIAM.class);
|
|
||||||
|
|
||||||
// 同步的VO 转换成 数据库EO,并存库
|
|
||||||
for (UserVoIAM userVoIAM : userVoIAMList){
|
|
||||||
UserEO userEO = this.transUserIAMVoToUserEO(userVoIAM);
|
|
||||||
this.iUserEoService.syncSaveOrUpdate(userEO);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.addSyncLog(null, syncStartTime, SyncTypeEnum.USER_INCREMENT_DATA.getValue());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -237,16 +181,16 @@ public class SyncIAMTimer {
|
|||||||
*/
|
*/
|
||||||
public OrgEO transOrgIAMVoToOrgEO(OrgVoIAM orgVoIAM) {
|
public OrgEO transOrgIAMVoToOrgEO(OrgVoIAM orgVoIAM) {
|
||||||
OrgEO orgEO = new OrgEO();
|
OrgEO orgEO = new OrgEO();
|
||||||
orgEO.setId(orgVoIAM.getOrgCode());
|
// orgEO.setId(orgVoIAM.getOrgCode());
|
||||||
orgEO.setOrgCode(orgVoIAM.getOrgCode());
|
// orgEO.setOrgCode(orgVoIAM.getOrgCode());
|
||||||
orgEO.setOrgName(orgVoIAM.getOrgName());
|
// orgEO.setOrgName(orgVoIAM.getOrgName());
|
||||||
orgEO.setOrgLevel(orgVoIAM.getOrgLevel());
|
// orgEO.setOrgLevel(orgVoIAM.getOrgLevel());
|
||||||
orgEO.setSupOrgCode(orgVoIAM.getSupOrgCode());
|
// orgEO.setSupOrgCode(orgVoIAM.getSupOrgCode());
|
||||||
orgEO.setOrgShortName(orgVoIAM.getOrgShortName());
|
// orgEO.setOrgShortName(orgVoIAM.getOrgShortName());
|
||||||
orgEO.setAttribution(orgVoIAM.getAttribution());
|
// orgEO.setAttribution(orgVoIAM.getAttribution());
|
||||||
orgEO.setBmdm14(orgVoIAM.getBmdm14());
|
// orgEO.setBmdm14(orgVoIAM.getBmdm14());
|
||||||
orgEO.setStatus(orgVoIAM.getStatus());
|
// orgEO.setStatus(orgVoIAM.getStatus());
|
||||||
orgEO.setUpdateTime(orgVoIAM.getUpdateTime());
|
// orgEO.setUpdateTime(orgVoIAM.getUpdateTime());
|
||||||
|
|
||||||
return orgEO;
|
return orgEO;
|
||||||
}
|
}
|
||||||
@@ -257,45 +201,37 @@ public class SyncIAMTimer {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public UserEO transUserIAMVoToUserEO(UserVoIAM userVoIAM) {
|
public UserEO transUserIAMVoToUserEO(UserVoIAM userVoIAM) {
|
||||||
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
||||||
|
|
||||||
UserEO userEO = new UserEO();
|
UserEO userEO = new UserEO();
|
||||||
// 转换基础数据
|
// 转换基础数据
|
||||||
userEO.setUsid(userVoIAM.getUserUiD());
|
userEO.setUsid(userVoIAM.getEmployeeID());
|
||||||
userEO.setIsSelf(UserBelongEnum.IAM.getValue());
|
userEO.setIsSelf(UserBelongEnum.IAM.getValue());
|
||||||
userEO.setPassword(EncryptUtil.encrypt(SysConstants.DEFAULT_PASSWORD));
|
userEO.setPassword(EncryptUtil.encrypt(SysConstants.DEFAULT_PASSWORD));
|
||||||
userEO.setDelFlag(0);
|
userEO.setDelFlag(0);
|
||||||
userEO.setAccount(userVoIAM.getWorkNo());
|
userEO.setAccount(userVoIAM.getAccount());
|
||||||
userEO.setCellPhoneNumber(userVoIAM.getMobile() == null ? EncryptUtil.encrypt("") : EncryptUtil.encrypt(userVoIAM.getMobile()));
|
userEO.setCellPhoneNumber(userVoIAM.getMobile() == null ? EncryptUtil.encrypt("") : EncryptUtil.encrypt(userVoIAM.getMobile()));
|
||||||
userEO.setCreateTime(userVoIAM.getUpdateTime());
|
userEO.setCreateTime(userVoIAM.getEnterTime());
|
||||||
userEO.setUpdateTime(userVoIAM.getUpdateTime());
|
userEO.setUpdateTime(userVoIAM.getEnterTime());
|
||||||
userEO.setEmail(userVoIAM.getEmail() == null ? EncryptUtil.encrypt("") : EncryptUtil.encrypt(userVoIAM.getEmail()));
|
userEO.setEmail(userVoIAM.getEmail() == null ? EncryptUtil.encrypt("") : EncryptUtil.encrypt(userVoIAM.getEmail()));
|
||||||
userEO.setUsname(userVoIAM.getUserName());
|
userEO.setUsname(userVoIAM.getCnName());
|
||||||
userEO.setDutyCode(userVoIAM.getDutyCode());
|
|
||||||
userEO.setDutyName(userVoIAM.getDutyName());
|
|
||||||
userEO.setStatus(userVoIAM.getStatus());
|
userEO.setStatus(userVoIAM.getStatus());
|
||||||
userEO.setLevelId(userVoIAM.getLevelId());
|
userEO.setLevelId(userVoIAM.getLevelID());
|
||||||
userEO.setZj(userVoIAM.getZj());
|
userEO.setLevelId(userVoIAM.getLevelName());
|
||||||
|
userEO.setZj(userVoIAM.getZJ());
|
||||||
|
|
||||||
// 转换org的关联数据
|
// 转换org的关联数据
|
||||||
List<OrgEO> orgList = new ArrayList<>();
|
OrgEO orgEO = new OrgEO();
|
||||||
if (userVoIAM.getOrgs() != null){
|
orgEO.setId(userVoIAM.getDepartID());
|
||||||
for (OrgsShortVoIAM orgsShortVoIAM :userVoIAM.getOrgs()) {
|
orgEO.setDepartmentCode(userVoIAM.getDepartmentCode());
|
||||||
OrgEO orgEO = new OrgEO();
|
orgEO.setLongName(userVoIAM.getDepartmentName());
|
||||||
orgEO.setId(orgsShortVoIAM.getOrgCode());
|
|
||||||
orgEO.setOrgCode(orgsShortVoIAM.getOrgCode());
|
|
||||||
orgEO.setOrgName(orgsShortVoIAM.getOrgName());
|
|
||||||
orgEO.setOrgShortName(orgsShortVoIAM.getOrgShortName());
|
|
||||||
|
|
||||||
orgList.add(orgEO);
|
List<OrgEO> orgList = new ArrayList<>();
|
||||||
}
|
orgList.add(orgEO);
|
||||||
}
|
|
||||||
userEO.setOrgEOList(orgList);
|
userEO.setOrgEOList(orgList);
|
||||||
|
|
||||||
// 固定角色数据
|
// 固定角色数据
|
||||||
List<String> roleIdList = new ArrayList<>();
|
List<String> roleIdList = new ArrayList<>();
|
||||||
// TODO 根据level固定为一般管理人员 或 总监
|
// TODO 根据level固定为一般管理人员 或 总监
|
||||||
if ("0.5".equals(userEO.getLevelId())){
|
if ("1".equals(userEO.getLevelId()) || "2".equals(userEO.getLevelId()) || "3".equals(userEO.getLevelId()) || "4".equals(userEO.getLevelId())){
|
||||||
roleIdList.add("1");
|
roleIdList.add("1");
|
||||||
} else {
|
} else {
|
||||||
roleIdList.add("2");
|
roleIdList.add("2");
|
||||||
|
|||||||
@@ -4,9 +4,7 @@ package com.adc.da.sync.service.enums;
|
|||||||
*/
|
*/
|
||||||
public enum SyncTypeEnum {
|
public enum SyncTypeEnum {
|
||||||
|
|
||||||
USER_FULL_DATA("USER_FULL_DATA","用户数据-全量同步"),
|
|
||||||
USER_INCREMENT_DATA("USER_INCREMENT_DATA","用户数据-增量同步"),
|
USER_INCREMENT_DATA("USER_INCREMENT_DATA","用户数据-增量同步"),
|
||||||
ORG_FULL_DATA("ORG_FULL_DATA","组织机构数据-全量同步"),
|
|
||||||
ORG_INCREMENT_DATA("ORG_INCREMENT_DATA","组织机构数据-增量同步");
|
ORG_INCREMENT_DATA("ORG_INCREMENT_DATA","组织机构数据-增量同步");
|
||||||
|
|
||||||
private String label;
|
private String label;
|
||||||
|
|||||||
@@ -0,0 +1,114 @@
|
|||||||
|
package com.adc.da.sync.service.utils;
|
||||||
|
|
||||||
|
import org.springframework.http.HttpMethod;
|
||||||
|
|
||||||
|
import javax.crypto.Mac;
|
||||||
|
import javax.crypto.spec.SecretKeySpec;
|
||||||
|
import javax.xml.bind.DatatypeConverter;
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
|
import java.net.URLEncoder;
|
||||||
|
import java.security.InvalidKeyException;
|
||||||
|
import java.security.NoSuchAlgorithmException;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author tao.sun.MS
|
||||||
|
* @date 2022/1/29
|
||||||
|
*/
|
||||||
|
public class SignUtils {
|
||||||
|
|
||||||
|
public static String generate(HttpMethod method, String url, String custom, String accessKey, String gmtDate, String secretKey) {
|
||||||
|
String[] urlContents = url.split("\\?");
|
||||||
|
String uri = dealUri(urlContents[0]);
|
||||||
|
String queryString = "";
|
||||||
|
if (urlContents.length > 1) {
|
||||||
|
queryString = dealQueryString(urlContents[1]);
|
||||||
|
}
|
||||||
|
String signString = method + "\n" + uri + "\n" + queryString + "\n" + accessKey + "\n" + gmtDate + "\n" + dealHeaders(custom);
|
||||||
|
return sha256_HMAC(secretKey, signString);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String generateUrlSignature(String url, String secretKey) {
|
||||||
|
String[] urlContents = url.split("\\?");
|
||||||
|
String uri = dealUri(urlContents[0]);
|
||||||
|
return sha256_HMAC(secretKey, uri).replace("=", "*");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* sha256_HMAC加密
|
||||||
|
* @param secret 秘钥
|
||||||
|
* @param message 消息
|
||||||
|
* @return 加密后字符串
|
||||||
|
*/
|
||||||
|
public static String sha256_HMAC(String secret, String message) {
|
||||||
|
String sign = "";
|
||||||
|
try {
|
||||||
|
Mac harsher = Mac.getInstance("HmacSHA256");
|
||||||
|
harsher.init(new SecretKeySpec(secret.getBytes(), "HmacSHA256"));
|
||||||
|
|
||||||
|
byte[] hash = harsher.doFinal(message.getBytes());
|
||||||
|
|
||||||
|
// to lowercase hexit
|
||||||
|
sign = DatatypeConverter.printBase64Binary(hash);
|
||||||
|
}
|
||||||
|
catch (NoSuchAlgorithmException | InvalidKeyException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return sign;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String dealUri(String uri) {
|
||||||
|
if (uri == null || uri.isEmpty()) {
|
||||||
|
return "/";
|
||||||
|
} else {
|
||||||
|
if (uri.startsWith("/")) {
|
||||||
|
return uri;
|
||||||
|
} else {
|
||||||
|
return "/" + uri;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String dealQueryString(String queryString) {
|
||||||
|
if (queryString == null || queryString.isEmpty()) {
|
||||||
|
return "";
|
||||||
|
} else {
|
||||||
|
Map<String, String> params = new HashMap<>();
|
||||||
|
String[] queryParams = queryString.split("&");
|
||||||
|
int i = 0;
|
||||||
|
while (i < queryParams.length) {
|
||||||
|
String[] queryContent = queryParams[i].split("=");
|
||||||
|
if (queryContent.length > 1) {
|
||||||
|
params.put(queryContent[0], queryContent[1]);
|
||||||
|
} else {
|
||||||
|
params.put(queryContent[0], "");
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
List<Map.Entry<String, String>> parameters = new LinkedList<>(params.entrySet());
|
||||||
|
parameters.sort(Map.Entry.comparingByKey());
|
||||||
|
StringBuilder sortedQueryString = new StringBuilder();
|
||||||
|
for (Map.Entry<String, String> parameter : parameters) {
|
||||||
|
try {
|
||||||
|
sortedQueryString.append(parameter.getKey()).append("=").append(URLEncoder.encode(parameter.getValue(), "UTF-8")).append("&");
|
||||||
|
} catch (UnsupportedEncodingException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 去掉多余的&
|
||||||
|
sortedQueryString.deleteCharAt(sortedQueryString.length() - 1);
|
||||||
|
return sortedQueryString.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String dealHeaders(String custom) {
|
||||||
|
return "x-custom:" + custom + "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getGMTDate() {
|
||||||
|
SimpleDateFormat sdf = new SimpleDateFormat("EEE, d MMM yyyy hh:mm:ss z", Locale.ENGLISH);
|
||||||
|
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
|
||||||
|
return sdf.format(Calendar.getInstance().getTime());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -99,7 +99,7 @@ public class OrgEOController extends BaseController<OrgEO> {
|
|||||||
LocalDateTime dateTime = LocalDateTime.now();
|
LocalDateTime dateTime = LocalDateTime.now();
|
||||||
String currentDateTimeString = dateTime.format(formatter);
|
String currentDateTimeString = dateTime.format(formatter);
|
||||||
orgEO.setUpdateTime(currentDateTimeString);
|
orgEO.setUpdateTime(currentDateTimeString);
|
||||||
orgEO.setStatus(1);
|
// orgEO.setStatus(1);
|
||||||
return orgEOService.saveOrUpdateSingleton(orgEO);
|
return orgEOService.saveOrUpdateSingleton(orgEO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,56 +24,65 @@ public class OrgEO extends BaseEntity implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 部门编码
|
* 部门编码
|
||||||
*/
|
*/
|
||||||
@TableField("org_code")
|
@TableField("DEPARTMENT_CODE")
|
||||||
private String orgCode;
|
private String DepartmentCode;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 部门短名称
|
||||||
|
*/
|
||||||
|
@TableField("SHORT_NAME")
|
||||||
|
private String ShortName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 部门名称
|
* 部门名称
|
||||||
*/
|
*/
|
||||||
@TableField("ORG_NAME")
|
@TableField("LONG_NAME")
|
||||||
private String orgName;
|
private String LongName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 部门级别
|
* 父部门id
|
||||||
*/
|
*/
|
||||||
@TableField("ORG_LEVEL")
|
@TableField("PARENT_ID")
|
||||||
private Integer orgLevel;
|
private String ParentID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 父部门编码
|
* 部门路径
|
||||||
*/
|
*/
|
||||||
@TableField("SUP_ORG_CODE")
|
@TableField("DEPARTMENT_PATH")
|
||||||
private String supOrgCode;
|
private String DepartmentPath;
|
||||||
|
|
||||||
/**
|
|
||||||
* 部门简称
|
|
||||||
*/
|
|
||||||
@TableField("ORG_SHORT_NAME")
|
|
||||||
private String orgShortName;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 归属地
|
|
||||||
*/
|
|
||||||
@TableField("ATTRIBUTION")
|
|
||||||
private String attribution;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 部门14位码
|
* 部门14位码
|
||||||
*/
|
*/
|
||||||
@TableField("BMDM_14")
|
@TableField("BMDM_14")
|
||||||
private String bmdm14;
|
private String BMDM14;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 状态,1正常,0停用,-1删除
|
* 部门级别
|
||||||
*/
|
*/
|
||||||
@TableField("STATUS")
|
@TableField("LEVEL")
|
||||||
private Integer status;
|
private String LeveL;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新时间,格式:yyyy-MM-dd HH:mm:ss
|
* 部门层级深度
|
||||||
*/
|
*/
|
||||||
|
@TableField("DEPTH")
|
||||||
|
private Integer Depth;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 子组织个数
|
||||||
|
*/
|
||||||
|
@TableField("VCOUNT")
|
||||||
|
private String Vcount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 归属地
|
||||||
|
*/
|
||||||
|
@TableField("ATTRIBUTION")
|
||||||
|
private String Attribution;
|
||||||
|
|
||||||
@TableField("UPDATE_TIME")
|
@TableField("UPDATE_TIME")
|
||||||
private String updateTime;
|
private String UpdateTime;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -95,17 +95,17 @@ public class UserEO extends BaseEntity implements Serializable {
|
|||||||
@TableField("USNAME")
|
@TableField("USNAME")
|
||||||
private String usname;
|
private String usname;
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* 职位编码
|
// * 职位编码
|
||||||
*/
|
// */
|
||||||
@TableField("DUTY_CODE")
|
// @TableField("DUTY_CODE")
|
||||||
private String dutyCode;
|
// private String dutyCode;
|
||||||
|
//
|
||||||
/**
|
// /**
|
||||||
* 职位名称
|
// * 职位名称
|
||||||
*/
|
// */
|
||||||
@TableField("DUTY_NAME")
|
// @TableField("DUTY_NAME")
|
||||||
private String dutyName;
|
// private String dutyName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 员工状态:0停用,1启用,2密码错误锁定,3管理员强制锁定
|
* 员工状态:0停用,1启用,2密码错误锁定,3管理员强制锁定
|
||||||
@@ -119,6 +119,12 @@ public class UserEO extends BaseEntity implements Serializable {
|
|||||||
@TableField("LEVEL_ID")
|
@TableField("LEVEL_ID")
|
||||||
private String levelId;
|
private String levelId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 级别ID
|
||||||
|
*/
|
||||||
|
@TableField("LEVEL_NAME")
|
||||||
|
private String levelName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 职级
|
* 职级
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -33,16 +33,18 @@ public class OrgEOService extends ServiceImpl<OrgEODao, OrgEO> implements IOrgEo
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void delete(String ids) {
|
public void delete(String ids) {
|
||||||
String[] idArray = ids.split(",");
|
// TODO 没有状态字段了,直接删了把
|
||||||
OrgEO orgEO = new OrgEO();
|
// String[] idArray = ids.split(",");
|
||||||
orgEO.setStatus(-1);
|
// OrgEO orgEO = new OrgEO();
|
||||||
QueryWrapper<OrgEO> orgEOQueryWrapper = new QueryWrapper<>();
|
// orgEO.setStatus(-1);
|
||||||
orgEOQueryWrapper.in("org_code",idArray);
|
// QueryWrapper<OrgEO> orgEOQueryWrapper = new QueryWrapper<>();
|
||||||
baseMapper.update(orgEO,orgEOQueryWrapper);
|
// orgEOQueryWrapper.in("org_code",idArray);
|
||||||
|
// baseMapper.update(orgEO,orgEOQueryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<OrgEO> selectList(OrgEO orgEO) {
|
public List<OrgEO> selectList(OrgEO orgEO) {
|
||||||
orgEO.setStatus(1);
|
// TODO 无状态字段了
|
||||||
|
// orgEO.setStatus(1);
|
||||||
List<OrgEO> orgEOList = baseMapper.selectListByVO(orgEO);
|
List<OrgEO> orgEOList = baseMapper.selectListByVO(orgEO);
|
||||||
return orgEOList;
|
return orgEOList;
|
||||||
}
|
}
|
||||||
@@ -60,7 +62,7 @@ public class OrgEOService extends ServiceImpl<OrgEODao, OrgEO> implements IOrgEo
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public ResponseMessage saveOrUpdateSingleton(OrgEO orgEO) {
|
public ResponseMessage saveOrUpdateSingleton(OrgEO orgEO) {
|
||||||
if (StringUtils.isEmpty(orgEO.getOrgCode())){
|
if (StringUtils.isEmpty(orgEO.getDepartmentCode())){
|
||||||
return Result.error("部门编码不能为空");
|
return Result.error("部门编码不能为空");
|
||||||
}
|
}
|
||||||
long count = baseMapper.selectCountByOrgCode(orgEO);
|
long count = baseMapper.selectCountByOrgCode(orgEO);
|
||||||
@@ -68,7 +70,7 @@ public class OrgEOService extends ServiceImpl<OrgEODao, OrgEO> implements IOrgEo
|
|||||||
return Result.error("部门编码重复");
|
return Result.error("部门编码重复");
|
||||||
}
|
}
|
||||||
if(StringUtils.isBlank(orgEO.getId())){
|
if(StringUtils.isBlank(orgEO.getId())){
|
||||||
orgEO.setId(orgEO.getOrgCode());
|
orgEO.setId(orgEO.getDepartmentCode());
|
||||||
baseMapper.insert(orgEO);
|
baseMapper.insert(orgEO);
|
||||||
}else{
|
}else{
|
||||||
baseMapper.updateById(orgEO);
|
baseMapper.updateById(orgEO);
|
||||||
|
|||||||
@@ -159,7 +159,7 @@ public class UserEOServiceImpl implements IUserEoService {
|
|||||||
eo.getOrgEOList().forEach(c -> {
|
eo.getOrgEOList().forEach(c -> {
|
||||||
UserOrgEO userOrgEO = new UserOrgEO();
|
UserOrgEO userOrgEO = new UserOrgEO();
|
||||||
userOrgEO.setUserId(eo.getUsid());
|
userOrgEO.setUserId(eo.getUsid());
|
||||||
userOrgEO.setOrgId(c.getOrgCode());
|
userOrgEO.setOrgId(c.getId());
|
||||||
userOrgEODao.insert(userOrgEO);
|
userOrgEODao.insert(userOrgEO);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
package com.adc.da.sys.vo.iam;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CMP对接返回的统一格式
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class CmpOrgResult {
|
||||||
|
|
||||||
|
private int code;
|
||||||
|
|
||||||
|
private int resultCode;
|
||||||
|
|
||||||
|
private String message;
|
||||||
|
|
||||||
|
private String traceId;
|
||||||
|
|
||||||
|
private List<OrgVoIAM> data;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
package com.adc.da.sys.vo.iam;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CMP对接返回的统一格式(用户同步)
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class CmpUserResult {
|
||||||
|
|
||||||
|
private int code;
|
||||||
|
|
||||||
|
private int resultCode;
|
||||||
|
|
||||||
|
private String message;
|
||||||
|
|
||||||
|
private String traceId;
|
||||||
|
|
||||||
|
private List<UserVoIAM> data;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -8,49 +8,59 @@ import lombok.Data;
|
|||||||
@Data
|
@Data
|
||||||
public class OrgVoIAM {
|
public class OrgVoIAM {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 部门ID
|
||||||
|
*/
|
||||||
|
private String DepartmentID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 部门编码
|
* 部门编码
|
||||||
*/
|
*/
|
||||||
private String orgCode;
|
private String DepartmentCode;
|
||||||
|
|
||||||
/**
|
|
||||||
* 部门名称
|
|
||||||
*/
|
|
||||||
private String orgName;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 部门级别
|
|
||||||
*/
|
|
||||||
private Integer orgLevel;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 父部门编码
|
|
||||||
*/
|
|
||||||
private String supOrgCode;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 部门简称
|
* 部门简称
|
||||||
*/
|
*/
|
||||||
private String orgShortName;
|
private String ShortName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 部门全称
|
||||||
|
*/
|
||||||
|
private String LongName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上级部门id
|
||||||
|
*/
|
||||||
|
private String ParentID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 部门路径
|
||||||
|
*/
|
||||||
|
private String DepartmentPath;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 部门14位编码
|
||||||
|
*/
|
||||||
|
private String BMDM14;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 部门级别
|
||||||
|
*/
|
||||||
|
private String LeveL;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 部门层级深度
|
||||||
|
*/
|
||||||
|
private Integer Depth;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 子组织个数
|
||||||
|
*/
|
||||||
|
private String Vcount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 归属地
|
* 归属地
|
||||||
*/
|
*/
|
||||||
private String attribution;
|
private String Attribution;
|
||||||
|
|
||||||
/**
|
|
||||||
* 部门14位码
|
|
||||||
*/
|
|
||||||
private String bmdm14;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 状态,1正常,0停用,-1删除
|
|
||||||
*/
|
|
||||||
private Integer status;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 更新时间,格式:yyyy-MM-dd HH:mm:ss
|
|
||||||
*/
|
|
||||||
private String updateTime;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,126 +11,113 @@ import java.util.List;
|
|||||||
public class UserVoIAM {
|
public class UserVoIAM {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户UID
|
* 员工号
|
||||||
*/
|
*/
|
||||||
private String userUiD;
|
private String EmployeeID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 姓名
|
* 域账户
|
||||||
*/
|
*/
|
||||||
private String userName;
|
private String Account;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 姓
|
* 入公司方式
|
||||||
*/
|
*/
|
||||||
private String lastName;
|
private String ACTREA;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 名
|
* 中文名称
|
||||||
*/
|
*/
|
||||||
private String firstName;
|
private String CnName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 中文名
|
* 生日
|
||||||
*/
|
*/
|
||||||
private String zhName;
|
private String Birthday;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 英文名
|
* 英文名
|
||||||
*/
|
*/
|
||||||
private String enName;
|
private String EnName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 姓名首字母
|
* 性别
|
||||||
*/
|
*/
|
||||||
private String pinyin;
|
private String Gender;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 生日,格式:1980-01-01
|
* 部门ID (直属组织)
|
||||||
*/
|
*/
|
||||||
private String birthday;
|
private String DepartID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 性别,1男,0女
|
* 部门编号(直属组织)
|
||||||
*/
|
*/
|
||||||
private String gender;
|
private String DepartmentCode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 员工号
|
* 部门名称(直属组织)
|
||||||
*/
|
*/
|
||||||
private String workNo;
|
private String DepartmentName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 邮箱
|
* 职务ID
|
||||||
*/
|
*/
|
||||||
private String email;
|
private String JobID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 职位编码
|
* 职务名称
|
||||||
*/
|
*/
|
||||||
private String dutyCode;
|
private String JobName;
|
||||||
|
|
||||||
/**
|
|
||||||
* 职位名称
|
|
||||||
*/
|
|
||||||
private String dutyName;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 员工类型ID:1为劳动合同工,3为外聘员工,4为劳务人员,5为返聘人员,6为外籍员工
|
* 员工类型ID:1为劳动合同工,3为外聘员工,4为劳务人员,5为返聘人员,6为外籍员工
|
||||||
*/
|
*/
|
||||||
private String employeeTypeId;
|
private String EmployeeTypeID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 员工状态:0停用,1启用,2密码错误锁定,3管理员强制锁定
|
* 员工状态
|
||||||
*/
|
*/
|
||||||
private String status;
|
private String Status;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 级别ID
|
* 级别ID:1为总经理,2为副总经理,3为公司工会主席,4为高级经理,5为二级经理,6为三级经理,9为代理二级经理
|
||||||
*/
|
*/
|
||||||
private String levelId;
|
private String LevelID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 级别名称
|
||||||
|
*/
|
||||||
|
private String LevelName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 邮箱
|
||||||
|
*/
|
||||||
|
private String Email;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 手机号码
|
* 手机号码
|
||||||
*/
|
*/
|
||||||
private String mobile;
|
private String Mobile;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 数组:
|
* 员工子组代码:10为管理人员在岗,11为管理人员退休,12为管理人员放假,13为管理人员待岗;20为工人在岗,21为工人退养,22为工人放假,23为工
|
||||||
* 10为管理人员在岗,11为管理人员退休,12为管理人员放假,
|
* 人待岗
|
||||||
* 13为管理人员待岗;20为工人在岗,21为工人退养,
|
|
||||||
* 22为工人放假,23为工人待岗
|
|
||||||
*/
|
*/
|
||||||
private String persk;
|
private String Persk;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 地区
|
* 入职时间
|
||||||
*/
|
*/
|
||||||
private String ort01;
|
private String EnterTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 职务
|
* 在职状态
|
||||||
*/
|
*/
|
||||||
private String outlookJob;
|
private String POSSC;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 职级
|
* 职级
|
||||||
*/
|
*/
|
||||||
private String zj;
|
private String ZJ;
|
||||||
|
|
||||||
/**
|
|
||||||
* 更新时间:2022-10-28 11:11:45
|
|
||||||
*/
|
|
||||||
private String updateTime;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 部门信息
|
|
||||||
*/
|
|
||||||
List<OrgsShortVoIAM> orgs;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 用户类型信息
|
|
||||||
*/
|
|
||||||
List<UserTypesVoIAM> useTypes;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user