commit
This commit is contained in:
@@ -16,10 +16,10 @@ public enum Api2FinanceFiledMap {
|
|||||||
RYDM("rydm", "loginname"),
|
RYDM("rydm", "loginname"),
|
||||||
// 人员名称
|
// 人员名称
|
||||||
RYMC("rymc", "username"),
|
RYMC("rymc", "username"),
|
||||||
// 编制会费
|
// 编制会费,需与财务拉取后读取的 NutMap key 保持一致。
|
||||||
HF("hf", "name"),
|
HF("hf", "preparationMemberFee"),
|
||||||
// 合同制会费
|
// 合同制会费,需与财务拉取后读取的 NutMap key 保持一致。
|
||||||
HF2("hf2", "unitType");
|
HF2("hf2", "contractMemberFee");
|
||||||
|
|
||||||
public final String apiField;
|
public final String apiField;
|
||||||
public final String dbColumn;
|
public final String dbColumn;
|
||||||
|
|||||||
@@ -195,8 +195,6 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
|||||||
Sys_user u = new Sys_user();
|
Sys_user u = new Sys_user();
|
||||||
BeanUtils.copyProperties(source, u);
|
BeanUtils.copyProperties(source, u);
|
||||||
|
|
||||||
// 先不处理会员
|
|
||||||
u.setMember(null);
|
|
||||||
|
|
||||||
if (user == null) {
|
if (user == null) {
|
||||||
// 新增用户,初始化数据
|
// 新增用户,初始化数据
|
||||||
@@ -204,9 +202,9 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
|||||||
u.setSalt(salt);
|
u.setSalt(salt);
|
||||||
u.setPassword(PwdUtil.getPassword(PwdUtil.generate(12), salt));
|
u.setPassword(PwdUtil.getPassword(PwdUtil.generate(12), salt));
|
||||||
|
|
||||||
// if (u.getMember()) {
|
if (u.getMember()) {
|
||||||
// addMemberUserIds.add(u.getId());
|
addMemberUserIds.add(u.getId());
|
||||||
// }
|
}
|
||||||
needInitUserList.add(u);
|
needInitUserList.add(u);
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
@@ -218,13 +216,13 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
|||||||
u.setId(user.getId());
|
u.setId(user.getId());
|
||||||
|
|
||||||
// 更新会员状态
|
// 更新会员状态
|
||||||
boolean currentIsMember = user.getMember() != null && user.getMember();
|
boolean currentIsMember = source.getMember() != null && source.getMember();
|
||||||
|
|
||||||
// if (!currentIsMember) {
|
if (currentIsMember) {
|
||||||
// addMemberUserIds.add(user.getId());
|
addMemberUserIds.add(user.getId());
|
||||||
// } else{
|
} else{
|
||||||
// removeMemberUserIds.add(user.getId());
|
removeMemberUserIds.add(user.getId());
|
||||||
// }
|
}
|
||||||
|
|
||||||
needDoUpdateList.add(u);
|
needDoUpdateList.add(u);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ import com.budwk.app.sys.models.Sys_user_source;
|
|||||||
import com.budwk.app.sys.services.SysDataUnitPullService;
|
import com.budwk.app.sys.services.SysDataUnitPullService;
|
||||||
import com.budwk.app.sys.services.SysDataUserPullService;
|
import com.budwk.app.sys.services.SysDataUserPullService;
|
||||||
import com.budwk.app.sys.services.SysDictService;
|
import com.budwk.app.sys.services.SysDictService;
|
||||||
import com.budwk.app.sys.utils.DataCenterUtil;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.nutz.aop.interceptor.async.Async;
|
import org.nutz.aop.interceptor.async.Async;
|
||||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||||
@@ -396,7 +395,7 @@ public class SysDataUserPullServiceImpl extends BaseServiceImpl<Sys_user_source>
|
|||||||
|
|
||||||
List<JSONObject> rawDataList = new ArrayList<>();
|
List<JSONObject> rawDataList = new ArrayList<>();
|
||||||
String year = String.valueOf(DateUtil.thisYear());
|
String year = String.valueOf(DateUtil.thisYear());
|
||||||
String month = String.valueOf(DateUtil.thisMonth() + 1);
|
String month = String.valueOf(DateUtil.thisMonth());
|
||||||
|
|
||||||
int pageNum = 1;
|
int pageNum = 1;
|
||||||
int pageSize = 1000;
|
int pageSize = 1000;
|
||||||
@@ -414,12 +413,14 @@ public class SysDataUserPullServiceImpl extends BaseServiceImpl<Sys_user_source>
|
|||||||
"pageSize", pageSize
|
"pageSize", pageSize
|
||||||
);
|
);
|
||||||
httpRequest.body(JSONUtil.toJsonStr(reqBody));
|
httpRequest.body(JSONUtil.toJsonStr(reqBody));
|
||||||
|
log.info("财务接口填写数据: {}", reqBody);
|
||||||
JSONObject resp = JSONUtil.parseObj(httpRequest.execute().body());
|
JSONObject resp = JSONUtil.parseObj(httpRequest.execute().body());
|
||||||
|
log.info("财务接口返回结果: {}", resp);
|
||||||
if (resp.getInt("code") != 0) {
|
if (resp.getInt("code") != 0) {
|
||||||
throw new BaseException("获取财务数据失败,错误码: " + resp.getInt("code") + ";错误原因:" + resp.getStr("msg"));
|
throw new BaseException("获取财务数据失败,错误码: " + resp.getInt("code") + ";错误原因:" + resp.getStr("msg"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 财务接口的分页信息在 data 节点,明细数据在顶层 records 节点,解析时需要分别读取。
|
||||||
JSONObject data = resp.getJSONObject("data");
|
JSONObject data = resp.getJSONObject("data");
|
||||||
if (pageNum == 1) {
|
if (pageNum == 1) {
|
||||||
totalCount = data.getInt("total", 0);
|
totalCount = data.getInt("total", 0);
|
||||||
@@ -427,16 +428,18 @@ public class SysDataUserPullServiceImpl extends BaseServiceImpl<Sys_user_source>
|
|||||||
totalPages = (int) Math.ceil((double) totalCount / pageSize);
|
totalPages = (int) Math.ceil((double) totalCount / pageSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
JSONArray records = data.getJSONArray("records");
|
JSONArray records = resp.getJSONArray("records");
|
||||||
|
log.info("财务数据转换前: {}", records);
|
||||||
if (CollUtil.isNotEmpty(records)) {
|
if (CollUtil.isNotEmpty(records)) {
|
||||||
rawDataList.addAll(records.stream().map(v -> (JSONObject) v).toList());
|
rawDataList.addAll(records.stream().map(v -> (JSONObject) v).toList());
|
||||||
log.info("数据拉取进度: {}/{}", rawDataList.size(), totalCount);
|
log.info("财务数据拉取进度: {}/{}", rawDataList.size(), totalCount);
|
||||||
}
|
}
|
||||||
|
log.info("财务数据转换后: {}", records.stream().map(v -> (JSONObject) v).toList());
|
||||||
pageNum++; // 只加页码
|
pageNum++; // 只加页码
|
||||||
} while (pageNum <= totalPages);
|
} while (pageNum <= totalPages);
|
||||||
|
|
||||||
// 接口数据输出
|
// 接口数据输出
|
||||||
log.info("数据拉取结果: {}", rawDataList);
|
log.info("财务数据拉取结果: {}", rawDataList);
|
||||||
|
|
||||||
// 最后结果数据
|
// 最后结果数据
|
||||||
Map<String, NutMap> result = new HashMap<>();
|
Map<String, NutMap> result = new HashMap<>();
|
||||||
@@ -445,14 +448,25 @@ public class SysDataUserPullServiceImpl extends BaseServiceImpl<Sys_user_source>
|
|||||||
.collect(Collectors.toMap(e -> e.apiField, e -> e.dbColumn));
|
.collect(Collectors.toMap(e -> e.apiField, e -> e.dbColumn));
|
||||||
|
|
||||||
for (JSONObject row : rawDataList) {
|
for (JSONObject row : rawDataList) {
|
||||||
NutMap nutMap = DataCenterUtil.mapJsonToBean(row, NutMap.class, api2db);
|
NutMap nutMap = NutMap.NEW();
|
||||||
|
// NutMap 不是普通 JavaBean,不能用反射字段赋值,这里按映射关系直接写入键值。
|
||||||
|
api2db.forEach((apiField, dbColumn) -> {
|
||||||
|
Object value = row.get(apiField);
|
||||||
|
if (value != null) {
|
||||||
|
nutMap.setv(dbColumn, value);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (StrUtil.isBlank(nutMap.getString("loginname"))) {
|
||||||
|
log.warn("财务数据缺少工号,跳过本条记录: {}", row);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
result.put(nutMap.getString("loginname"), nutMap);
|
result.put(nutMap.getString("loginname"), nutMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 输出结果
|
// 输出结果
|
||||||
log.info("财务数据拉取转换结果: {}", result);
|
log.info("财务数据拉取转换结果: {}", result);
|
||||||
|
|
||||||
log.info("数据拉取完成,共拉取 {} 条数据", result.size());
|
log.info("财务数据拉取完成,共拉取 {} 条数据", result.size());
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user