This commit is contained in:
2025-11-05 10:25:22 +08:00
parent 375eb81203
commit aa94662db0
4 changed files with 45 additions and 77 deletions
@@ -12,13 +12,13 @@ import lombok.Getter;
@Getter
public enum Api2UnitFiledMap {
ZZJGDM("zzjgdm", "id"),
ZZJGMC("zzjgmc", "name"),
FJZZJGDM("fjzzjgdm", "parentId"),
JDCJDM("jdcjdm", "unitLevel"),
CJ_XYDWH("cj_xydwh", "divisionCollegeCode"),
JGLX("jglx", "institutionType"),
BMLB("bmlb", "unitType");
ZZJGDM("dm", "id"),
ZZJGMC("mc", "name"),
FJZZJGDM("ls", "parentId");
// JDCJDM("jdcjdm", "unitLevel"),
// CJ_XYDWH("cj_xydwh", "divisionCollegeCode"),
// JGLX("jglx", "institutionType"),
// BMLB("bmlb", "unitType");
// SFQY("sfqy", "delFlag");
public final String apiField;
@@ -36,7 +36,7 @@ public class Sys_user extends BaseModel implements Serializable {
@Column
@Comment("工号")
@ColDefine(type = ColType.VARCHAR, width = 120)
@DataCenterColumn(name = "工号", key = "gh")
@DataCenterColumn(name = "工号", key = "zgh")
private String loginname;
@Column
@@ -48,6 +48,7 @@ public class Sys_user extends BaseModel implements Serializable {
@Column
@Comment("性别")
@ColDefine(type = ColType.VARCHAR, width = 10)
@DataCenterColumn(name = "性别", key = "xbmc")
private String sex;
@Column
@@ -69,7 +70,7 @@ public class Sys_user extends BaseModel implements Serializable {
@Column
@Comment("政治面貌")
@ColDefine(type = ColType.VARCHAR, width = 100)
@DataCenterColumn(name = "政治面貌", key = "zzmmm", dict = "USER_POLITICAL")
@DataCenterColumn(name = "政治面貌", key = "zzmmmc")
private String political;
@Column
@@ -80,37 +81,34 @@ public class Sys_user extends BaseModel implements Serializable {
@Column
@Comment("民族")
@ColDefine(type = ColType.VARCHAR, width = 20)
@DataCenterColumn(name = "民族", key = "mzm", dict = "USER_NATION")
@DataCenterColumn(name = "民族", key = "mzmc")
private String nation;
@Column
@Comment("籍贯")
@ColDefine(type = ColType.VARCHAR, width = 100)
@DataCenterColumn(name = "籍贯", key = "dqm")
@DataCenterColumn(name = "籍贯", key = "jgmc")
private String nativePlace;
@Column
@Comment("国籍")
@ColDefine(type = ColType.VARCHAR, width = 20)
@DataCenterColumn(name = "国籍", key = "gjdqm", dict = "USER_NATIONALITY")
private String nationality;
@Column
@Comment("证件类型")
@ColDefine(type = ColType.VARCHAR, width = 30)
@DataCenterColumn(name = "证件类型", key = "sfzjlxm", dict = "USER_IDENTITY_TYPE")
private String idCardType;
@Column
@Comment("证件号码")
@ColDefine(type = ColType.VARCHAR, width = 30)
@DataCenterColumn(name = "证件号码", key = "sfzjh")
private String idCard;
@Column
@Comment("手机号码")
@ColDefine(type = ColType.VARCHAR, width = 32)
// @DataCenterColumn(name = "手机号码", key = "sjh")
@DataCenterColumn(name = "手机号码", key = "sjh")
private String mobile;
@Column
@@ -122,7 +120,6 @@ public class Sys_user extends BaseModel implements Serializable {
@Column
@Comment("婚姻状况")
@ColDefine(type = ColType.VARCHAR, width = 20)
@DataCenterColumn(name = "婚姻状况", key = "hyztm", dict = "USER_MARRIAGE")
private String marriage;
@Column
@@ -134,7 +131,6 @@ public class Sys_user extends BaseModel implements Serializable {
@Column
@Comment("岗位类别")
@ColDefine(type = ColType.VARCHAR, width = 50)
@DataCenterColumn(name = "岗位类别", key = "prgw")
private String jobCategory;
@Column
@@ -194,31 +190,29 @@ public class Sys_user extends BaseModel implements Serializable {
@Column
@Comment("在职状态")
@ColDefine(type = ColType.VARCHAR, width = 30)
@DataCenterColumn(name = "在岗状态", key = "zgzt")
@DataCenterColumn(name = "在岗状态", key = "dqztmc")
private String userState;
@Column
@Comment("教职工类别码")
@ColDefine(type = ColType.VARCHAR, width = 30)
@DataCenterColumn(name = "教职工类别码", key = "jzglbm", dict = "USER_PERSON_TYPE")
@DataCenterColumn(name = "教职工类别码", key = "jzgrylbmc")
private String personType;
@Column
@Comment("编制类别码")
@ColDefine(type = ColType.VARCHAR, width = 30)
@DataCenterColumn(name = "编制类别码", key = "bzlxm", dict = "USER_PREPARED_BY_TYPE")
@DataCenterColumn(name = "编制类别码", key = "zbqkmc")
private String preparedBy;
@Column
@Comment("从教年月")
@ColDefine(type = ColType.DATE)
@DataCenterColumn(name = "从教年月", key = "cjny")
private Date teachingTime;
@Column
@Comment("预计离校时间/最后离校时间")
@ColDefine(type = ColType.DATE)
@DataCenterColumn(name = "预计离校时间/最后离校时间", key = "yjlxsj")
private Date expectedLeaveSchoolDate;
@Column
@@ -3,6 +3,7 @@ package com.budwk.app.sys.services.impl;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.budwk.app.base.config.DataCenterProperties;
@@ -62,18 +63,17 @@ public class SysDataUnitPullServiceImpl extends BaseServiceImpl<Sys_unit> implem
@Override
@Aop(TransAop.READ_COMMITTED)
public void updateUnits(List<String> unitIds) {
// 获取配置
DataCenterProperties.Credential credential = dcPro.credential("unit");
String url = credential.getUrl();
String token = credential.getToken();
// 请求数据
HttpRequest httpRequest = HttpUtil.createPost(url);
String tokenUrl = "https://dcs.hgu.edu.cn:8888/openApi/API/zzjg";
HttpRequest httpRequest = HttpUtil.createPost(tokenUrl);
httpRequest.header("Content-Type", "application/json");
httpRequest.header("X-H3C-TOKEN", token);
httpRequest.body(JSONUtil.toJsonStr(Map.of()));
httpRequest.header("applyId", "39923603855883264");
httpRequest.header("secretKey", "169a960048124f4483e9637807afc9f6");
httpRequest.body(JSONUtil.toJsonStr(Map.of("page", 1, "pagesize", 1000)));
log.info("请求人员数据: {}", httpRequest);
String resBody = httpRequest.execute().body();
log.info("请求人员数据结果: {}", resBody);
JSONObject jsonBody = JSONUtil.parseObj(resBody);
if (jsonBody.getInt("code") != 200) {
@@ -85,18 +85,17 @@ public class SysDataUnitPullServiceImpl extends BaseServiceImpl<Sys_unit> implem
// 需要更新的单位
List<Sys_unit> updateList = new ArrayList<>();
// 拉取过来的数据,全部的单位,一万四千多条,这里只保留 “部门类”
List<JSONObject> data = jsonBody.getJSONArray("data").stream()
.map(o -> (JSONObject) o)
.filter(row -> StrUtil.isNotBlank(row.getStr("bmlb")))
.toList();
JSONObject dataJson = jsonBody.getJSONObject("data");
JSONArray rows = dataJson.get("Rows", JSONArray.class);
List<JSONObject> data = rows.stream().map(v -> (JSONObject) v).toList();
Map<String, String> api2db = Arrays.stream(Api2UnitFiledMap.values())
.collect(Collectors.toMap(e -> e.apiField, e -> e.dbColumn));
for (JSONObject row : data) {
Sys_unit unit = DataCenterUtil.mapJsonToBean(row, Sys_unit.class, api2db);
unit.setUnitcode(unit.getId());
unit.setUnitTypeCode(unit.getUnitType().contains("部门") ? 1 : 0);
unit.setUnitTypeCode(unit.getParentId().length() == 2 ? 0 : 1);
if (unitIds.contains(unit.getId())) {
// 存在则更新
@@ -113,34 +113,30 @@ 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));
Map<String, NutMap> financeUserMap = pullFinance();
// // 博士后进站日期数据
// Map<String, Date> doctoralData = pullPostDoctoral();
// 获取配置文件 接口地址 和 token
DataCenterProperties.Credential credential = dataCenterProperties.credential("teacher");
String url = credential.getUrl();
String token = credential.getToken();
// 请求数据
HttpRequest httpRequest = HttpUtil.createPost(url);
String tokenUrl = "https://dcs.hgu.edu.cn:8888/openApi/API/jzgjbxx";
HttpRequest httpRequest = HttpUtil.createPost(tokenUrl);
httpRequest.header("Content-Type", "application/json");
httpRequest.header("X-H3C-TOKEN", token);
httpRequest.body(JSONUtil.toJsonStr(Map.of()));
httpRequest.header("applyId", "39923603855883264");
httpRequest.header("secretKey", "169a960048124f4483e9637807afc9f6");
httpRequest.body(JSONUtil.toJsonStr(Map.of("page", 1, "pagesize", 3000)));
log.info("请求人员数据: {}", httpRequest);
String resBody = httpRequest.execute().body();
log.info("请求人员数据结果: {}", resBody);
JSONObject jsonBody = JSONUtil.parseObj(resBody);
if (jsonBody.getInt("code") != 200) {
if (jsonBody.getInt("status") != 200) {
throw new BaseException("获取人员数据失败,错误码: " + jsonBody.getInt("code") + ";错误原因:" + jsonBody.getStr("msg"));
}
List<JSONObject> rawDataList = new ArrayList<>();
JSONArray data = jsonBody.getJSONArray("data");
JSONObject data = jsonBody.getJSONObject("data");
JSONArray rows = data.get("Rows", JSONArray.class);
if (!data.isEmpty()) {
// 先收集所有原始数据
rawDataList = data.stream().map(v -> (JSONObject) v).toList();
rawDataList = rows.stream().map(v -> (JSONObject) v).toList();
log.info("数据拉取进度: {}/{}", rawDataList.size(), jsonBody.getInt("total"));
} else {
log.warn("当前未获取到数据");
@@ -164,18 +160,7 @@ public class SysDataUserPullServiceImpl extends BaseServiceImpl<Sys_user_source>
.equals(v.getCode())).findFirst().orElse(new Sys_data_dict());
mapping.field.set(sysUser, sysDataDict.getName());
} else {
// 特殊处理 根据身份证号获取性别和出生年月
if ("sfzjh".equals(mapping.field.getName())) {
String idCard = raw.getStr(mapping.key);
if (StrUtil.isNotBlank(idCard)) {
int gender = IdcardUtil.getGenderByIdCard(idCard);
// 性别(1 : 男 0 : 女)
sysUser.setSex(gender == 1 ? "" : "");
mapping.field.set(sysUser, raw.getStr(mapping.key));
}
} else {
mapping.field.set(sysUser, raw.getStr(mapping.key));
}
mapping.field.set(sysUser, raw.getStr(mapping.key));
}
} else if (mapping.field.getType() == Date.class) {
mapping.field.set(sysUser, raw.getDate(mapping.key));
@@ -186,20 +171,9 @@ public class SysDataUserPullServiceImpl extends BaseServiceImpl<Sys_user_source>
}
// 设置单位相关信息
sysUser.setUnitId(raw.getStr("dwh"));
sysUser.setUnitId(raw.getStr("szdwdm"));
sysUser.setPullTime(nowDate);
// 判断财务信息有没有值,
if (financeUserMap.containsKey(sysUser.getLoginname())) {
NutMap nutMap = financeUserMap.get(sysUser.getLoginname());
sysUser.setMember(true);
sysUser.setWelfareMember(true);
sysUser.setPreparationMemberFee(BigDecimal.valueOf(nutMap.getDouble("preparationMemberFee")));
sysUser.setContractMemberFee(BigDecimal.valueOf(nutMap.getDouble("contractMemberFee")));
} else {
sysUser.setMember(false);
sysUser.setWelfareMember(false);
}
return sysUser;
}).toList();
@@ -286,7 +260,7 @@ public class SysDataUserPullServiceImpl extends BaseServiceImpl<Sys_user_source>
@Override
public Map<String, Date> pullPostDoctoral() {
String appId = "1926887238437818370";
/* String appId = "1926887238437818370";
String secret = "32df31fcf4fc43f9a647ee1f47134f36";
List<JSONObject> allUsers = new ArrayList<>();
@@ -333,7 +307,8 @@ public class SysDataUserPullServiceImpl extends BaseServiceImpl<Sys_user_source>
Map<String, Date> data = allUsers.stream().filter(v -> v.getStr("进站日期") != null).collect(Collectors.toMap(v -> v.getStr("教职工号"), v -> v.getDate("进站日期")));
return data;
return data;*/
return null;
}