feat: 优化2
This commit is contained in:
@@ -24,6 +24,7 @@ public class DataCenterProperties {
|
||||
@Inject
|
||||
private PropertiesProxy conf;
|
||||
|
||||
private boolean tokenEnabled;
|
||||
private String tokenUrl;
|
||||
private String key;
|
||||
private String secret;
|
||||
@@ -31,6 +32,7 @@ public class DataCenterProperties {
|
||||
|
||||
public void init() {
|
||||
Map<String, String> all = conf.toMap();
|
||||
tokenEnabled = conf.getBoolean("data-center.token-enabled", true);
|
||||
tokenUrl = all.get("data-center.token-url");
|
||||
key = all.get("data-center.key");
|
||||
secret = all.get("data-center.secret");
|
||||
|
||||
@@ -65,6 +65,7 @@ public class Sys_user extends BaseModel implements Serializable {
|
||||
@Column
|
||||
@Comment("出生日期")
|
||||
@ColDefine(type = ColType.DATE)
|
||||
@DataCenterColumn(name = "出生日期", key = "CSRQ")
|
||||
private Date birthday;
|
||||
|
||||
@Column
|
||||
@@ -114,6 +115,7 @@ public class Sys_user extends BaseModel implements Serializable {
|
||||
@Column
|
||||
@Comment("学历")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 20)
|
||||
@DataCenterColumn(name = "学历", key = "ZGXLMC")
|
||||
private String education;
|
||||
|
||||
@Column
|
||||
@@ -125,6 +127,7 @@ public class Sys_user extends BaseModel implements Serializable {
|
||||
@Comment("学位")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
// @DataCenterColumn(name = "学位", key = "zgxwmc")
|
||||
@DataCenterColumn(name = "学位", key = "ZGXWMC")
|
||||
private String academicDegree;
|
||||
|
||||
@Column
|
||||
@@ -135,6 +138,7 @@ public class Sys_user extends BaseModel implements Serializable {
|
||||
@Column
|
||||
@Comment("职称")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
@DataCenterColumn(name = "职称", key = "ZYJSZWDMMC")
|
||||
private String professionalTitle;
|
||||
|
||||
@Column
|
||||
@@ -220,6 +224,7 @@ public class Sys_user extends BaseModel implements Serializable {
|
||||
@Column
|
||||
@Comment("编制类别码")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 30)
|
||||
@DataCenterColumn(name = "编制类别", key = "BZLBDMMC")
|
||||
private String preparedBy;
|
||||
|
||||
@Column
|
||||
|
||||
@@ -121,14 +121,24 @@ public class SysDataUserPullServiceImpl extends BaseServiceImpl<Sys_user_source>
|
||||
// 字典码表Map,key为父级编码,value为子级字典列表
|
||||
Map<String, List<Sys_data_dict>> dataDictMap = dataDictList.stream().collect(Collectors.groupingBy(Sys_data_dict::getParentCode));
|
||||
|
||||
String accessToken = getDmpAccessToken();
|
||||
List<JSONObject> rawDataList = new ArrayList<>();
|
||||
rawDataList.addAll(pullDmpUsers(getDmpUrl(DMP_TEACHER_KEY), accessToken, "在岗教职工"));
|
||||
rawDataList.addAll(pullDmpUsers(getDmpUrl(DMP_DISPATCH_KEY), accessToken, "在岗劳务派遣"));
|
||||
if (dataCenterProperties.isTokenEnabled()) {
|
||||
String accessToken = getDmpAccessToken();
|
||||
rawDataList.addAll(pullDmpUsers(getDmpUrl(DMP_TEACHER_KEY), accessToken, "在岗教职工"));
|
||||
rawDataList.addAll(pullDmpUsers(getDmpUrl(DMP_DISPATCH_KEY), accessToken, "在岗劳务派遣"));
|
||||
} else {
|
||||
rawDataList.addAll(DataCenterUtil.pullData(getDmpUrl(DMP_TEACHER_KEY)));
|
||||
// 将浙师大字段转为现有中间表映射使用的键,保留Token模式的字段协议。
|
||||
Map<String, String> fieldAliases = Map.of("XBMC", "XB", "SJHM", "YDDH",
|
||||
"LXRQ", "LXNY", "DQZTMC", "DQZT", "YRFSDM", "RYLX", "SZDWDM", "SZDWH");
|
||||
for (JSONObject raw : rawDataList) {
|
||||
fieldAliases.forEach((source, target) -> raw.set(target, raw.get(source)));
|
||||
}
|
||||
}
|
||||
rawDataList = distinctDmpUsers(rawDataList);
|
||||
|
||||
if (rawDataList.isEmpty()) {
|
||||
log.warn("当前未获取到人员数据");
|
||||
throw new BaseException("当前未获取到人员数据,中止本次同步");
|
||||
}
|
||||
|
||||
Date nowDate = new Date();
|
||||
@@ -166,6 +176,7 @@ public class SysDataUserPullServiceImpl extends BaseServiceImpl<Sys_user_source>
|
||||
tertiaryParentUnitIds.put(sourceUnitId, parentUnit.getId());
|
||||
}
|
||||
|
||||
Map<String, Sys_unit> resolvedUnitMap = unitMap;
|
||||
// 赋值
|
||||
List<Sys_user_source> latestSourceList = rawDataList.stream().map(raw -> {
|
||||
Sys_user_source sysUser = new Sys_user_source();
|
||||
@@ -183,35 +194,45 @@ public class SysDataUserPullServiceImpl extends BaseServiceImpl<Sys_user_source>
|
||||
.findFirst().orElse(new Sys_data_dict());
|
||||
mapping.field.set(sysUser, StrUtil.blankToDefault(sysDataDict.getName(), raw.getStr(mapping.key)));
|
||||
} else {
|
||||
// 特殊处理 根据身份证号获取性别和出生年月
|
||||
if ("SFZJH".equals(mapping.key)) {
|
||||
String idCard = raw.getStr(mapping.key);
|
||||
mapping.field.set(sysUser, idCard);
|
||||
// 设置出生年月
|
||||
try {
|
||||
sysUser.setBirthday(IdcardUtil.getBirthDate(idCard));
|
||||
} catch (Exception e) {
|
||||
sysUser.setBirthday(null);
|
||||
}
|
||||
} else if ("LXNY".equals(mapping.key)) {
|
||||
if ("LXNY".equals(mapping.key)) {
|
||||
mapping.field.set(sysUser, normalizeArrivalAtSchoolDate(raw.getStr(mapping.key)));
|
||||
} else {
|
||||
mapping.field.set(sysUser, raw.getStr(mapping.key));
|
||||
}
|
||||
}
|
||||
} else if (mapping.field.getType() == Date.class) {
|
||||
mapping.field.set(sysUser, raw.getDate(mapping.key));
|
||||
String dateText = StrUtil.trim(raw.getStr(mapping.key));
|
||||
if (StrUtil.isNotBlank(dateText)) {
|
||||
mapping.field.set(sysUser, dateText.matches("\\d{8}")
|
||||
? DateUtil.parse(dateText, "yyyyMMdd") : DateUtil.parse(dateText));
|
||||
}
|
||||
}
|
||||
} catch (IllegalAccessException e) {
|
||||
log.error("设置字段值失败: {}", mapping.field.getName(), e);
|
||||
}
|
||||
}
|
||||
|
||||
if (sysUser.getBirthday() == null && StrUtil.isNotBlank(sysUser.getIdCard())) {
|
||||
try {
|
||||
sysUser.setBirthday(IdcardUtil.getBirthDate(sysUser.getIdCard()));
|
||||
} catch (Exception e) {
|
||||
sysUser.setBirthday(null);
|
||||
}
|
||||
}
|
||||
sysUser.setUnitName(raw.getStr("SZDW"));
|
||||
String sourceUnitId = raw.getStr("SZDWH");
|
||||
String parentUnitId = tertiaryParentUnitIds.get(sourceUnitId);
|
||||
sysUser.setUnitId(StrUtil.blankToDefault(parentUnitId, sourceUnitId));
|
||||
sysUser.setThreeUnitId(parentUnitId == null ? null : sourceUnitId);
|
||||
Sys_unit resolvedUnit = resolvedUnitMap.get(sysUser.getUnitId());
|
||||
if (resolvedUnit != null) {
|
||||
sysUser.setUnitName(resolvedUnit.getName());
|
||||
sysUser.setUnitPath(resolvedUnit.getPath());
|
||||
}
|
||||
if (!dataCenterProperties.isTokenEnabled()
|
||||
&& (resolvedUnit == null || StrUtil.isBlank(resolvedUnit.getPath()))) {
|
||||
throw new BaseException("人员{}所属机构不存在或路径为空,中止本次同步", sysUser.getLoginname());
|
||||
}
|
||||
|
||||
// 设置拉取时间
|
||||
sysUser.setPullTime(nowDate);
|
||||
@@ -255,7 +276,8 @@ public class SysDataUserPullServiceImpl extends BaseServiceImpl<Sys_user_source>
|
||||
String[] parts = dateText.split("-");
|
||||
return parts[0] + "-" + StrUtil.padPre(parts[1], 2, '0') + "-01";
|
||||
}
|
||||
return dateText;
|
||||
return DateUtil.formatDate(dateText.matches("\\d{8}")
|
||||
? DateUtil.parse(dateText, "yyyyMMdd") : DateUtil.parse(dateText));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -369,6 +391,9 @@ public class SysDataUserPullServiceImpl extends BaseServiceImpl<Sys_user_source>
|
||||
if (StrUtil.isBlank(loginName)) {
|
||||
loginName = raw.getStr("ID");
|
||||
}
|
||||
if (StrUtil.isBlank(raw.getStr("ZGH"))) {
|
||||
throw new BaseException("人员接口存在缺少职工号 ZGH 的记录");
|
||||
}
|
||||
userMap.putIfAbsent(loginName, raw);
|
||||
}
|
||||
return new ArrayList<>(userMap.values());
|
||||
|
||||
@@ -55,6 +55,7 @@ custom:
|
||||
keyHex: 00112233445566778899aabbccddeeff
|
||||
ivHex: 0102030405060708090a0b0c0d0e0f10
|
||||
data-center:
|
||||
token-enabled: false
|
||||
grant_type: password
|
||||
scope: read
|
||||
username: 3848A3C738EFBB2C2E76E0D59B419DACA16A80F3AB0354CD
|
||||
|
||||
@@ -56,6 +56,7 @@ custom:
|
||||
keyHex: 00112233445566778899aabbccddeeff
|
||||
ivHex: 0102030405060708090a0b0c0d0e0f10
|
||||
data-center:
|
||||
token-enabled: false
|
||||
grant_type: password
|
||||
scope: read
|
||||
username: 3848A3C738EFBB2C2E76E0D59B419DACA16A80F3AB0354CD
|
||||
|
||||
@@ -178,6 +178,7 @@ minio:
|
||||
bucket: '${sdk.minio.bucket}'
|
||||
|
||||
data-center:
|
||||
token-enabled: '${custom.data-center.token-enabled}'
|
||||
grant_type: '${custom.data-center.grant_type}'
|
||||
scope: '${custom.data-center.scope}'
|
||||
username: '${custom.data-center.username}'
|
||||
|
||||
Reference in New Issue
Block a user