commit
This commit is contained in:
+20
-20
@@ -71,10 +71,10 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
|||||||
*/
|
*/
|
||||||
private static final Set<String> MEMBER_USER_STATES = Set.of("在岗", "切线", "免职", "驻村", "援疆(藏)");
|
private static final Set<String> MEMBER_USER_STATES = Set.of("在岗", "切线", "免职", "驻村", "援疆(藏)");
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* 全量更新时,以下在职状态会自动取消会员身份和会员角色。
|
// 全量更新当前只增加会员,不取消会员身份和会员角色。
|
||||||
*/
|
|
||||||
private static final Set<String> REMOVE_MEMBER_USER_STATES = Set.of("离退休", "离世", "离校");
|
private static final Set<String> REMOVE_MEMBER_USER_STATES = Set.of("离退休", "离世", "离校");
|
||||||
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 字段映射类,用于缓存反射结果
|
* 字段映射类,用于缓存反射结果
|
||||||
@@ -157,12 +157,12 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
|||||||
return StrUtil.isNotBlank(userState) && MEMBER_USER_STATES.contains(userState);
|
return StrUtil.isNotBlank(userState) && MEMBER_USER_STATES.contains(userState);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* 判断本次人员状态是否需要取消会员身份。
|
// 全量更新当前只增加会员,不取消会员身份和会员角色。
|
||||||
*/
|
|
||||||
private boolean shouldRemoveMember(String userState) {
|
private boolean shouldRemoveMember(String userState) {
|
||||||
return StrUtil.isNotBlank(userState) && REMOVE_MEMBER_USER_STATES.contains(userState);
|
return StrUtil.isNotBlank(userState) && REMOVE_MEMBER_USER_STATES.contains(userState);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 人员源数据只负责基础人员信息,会员缴费及会费类字段由会员业务维护。
|
* 人员源数据只负责基础人员信息,会员缴费及会费类字段由会员业务维护。
|
||||||
@@ -213,9 +213,8 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
|||||||
return insertCount;
|
return insertCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* 批量取消会员身份并删除会员角色,仅用于全量更新中明确需要退会的人员状态。
|
// 全量更新当前只增加会员,不取消会员身份和会员角色。
|
||||||
*/
|
|
||||||
private int removeMemberAndRole(List<String> userIds, Sys_role memberRole) {
|
private int removeMemberAndRole(List<String> userIds, Sys_role memberRole) {
|
||||||
if (Lang.isEmpty(userIds) || memberRole == null) {
|
if (Lang.isEmpty(userIds) || memberRole == null) {
|
||||||
return 0;
|
return 0;
|
||||||
@@ -232,6 +231,7 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
|||||||
}
|
}
|
||||||
return removeRoleCount;
|
return removeRoleCount;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 全量更新用户数据
|
* 全量更新用户数据
|
||||||
@@ -273,7 +273,7 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
|||||||
List<Sys_user> needInitUserList = new CopyOnWriteArrayList<>();
|
List<Sys_user> needInitUserList = new CopyOnWriteArrayList<>();
|
||||||
List<Sys_user_history> histories = new CopyOnWriteArrayList<>();
|
List<Sys_user_history> histories = new CopyOnWriteArrayList<>();
|
||||||
List<String> addMemberUserIds = Collections.synchronizedList(new ArrayList<>());
|
List<String> addMemberUserIds = Collections.synchronizedList(new ArrayList<>());
|
||||||
List<String> removeMemberUserIds = Collections.synchronizedList(new ArrayList<>());
|
// List<String> removeMemberUserIds = Collections.synchronizedList(new ArrayList<>());
|
||||||
|
|
||||||
// 处理每条数据
|
// 处理每条数据
|
||||||
for (Sys_user_source source : sources) {
|
for (Sys_user_source source : sources) {
|
||||||
@@ -284,7 +284,7 @@ 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);
|
||||||
boolean addMember = shouldAddMember(source.getUserState());
|
boolean addMember = shouldAddMember(source.getUserState());
|
||||||
boolean removeMember = shouldRemoveMember(source.getUserState());
|
// boolean removeMember = shouldRemoveMember(source.getUserState());
|
||||||
|
|
||||||
if (user == null) {
|
if (user == null) {
|
||||||
// 新增用户,初始化数据
|
// 新增用户,初始化数据
|
||||||
@@ -297,9 +297,10 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
|||||||
if (addMember) {
|
if (addMember) {
|
||||||
u.setMember(true);
|
u.setMember(true);
|
||||||
addMemberUserIds.add(u.getId());
|
addMemberUserIds.add(u.getId());
|
||||||
} else if (removeMember) {
|
|
||||||
u.setMember(false);
|
|
||||||
}
|
}
|
||||||
|
// else if (removeMember) {
|
||||||
|
// u.setMember(false);
|
||||||
|
// }
|
||||||
needInitUserList.add(u);
|
needInitUserList.add(u);
|
||||||
} else {
|
} else {
|
||||||
// 修改现有用户 - 根据工号判断是原有的人
|
// 修改现有用户 - 根据工号判断是原有的人
|
||||||
@@ -308,10 +309,11 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
|||||||
if (addMember) {
|
if (addMember) {
|
||||||
u.setMember(true);
|
u.setMember(true);
|
||||||
addMemberUserIds.add(user.getId());
|
addMemberUserIds.add(user.getId());
|
||||||
} else if (removeMember) {
|
|
||||||
u.setMember(false);
|
|
||||||
removeMemberUserIds.add(user.getId());
|
|
||||||
}
|
}
|
||||||
|
// else if (removeMember) {
|
||||||
|
// u.setMember(false);
|
||||||
|
// removeMemberUserIds.add(user.getId());
|
||||||
|
// }
|
||||||
|
|
||||||
needDoUpdateList.add(u);
|
needDoUpdateList.add(u);
|
||||||
}
|
}
|
||||||
@@ -409,8 +411,8 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
|||||||
return "更新失败: " + e.getMessage();
|
return "更新失败: " + e.getMessage();
|
||||||
}
|
}
|
||||||
|
|
||||||
int memberRoleRemoveCount = removeMemberAndRole(removeMemberUserIds, memberRole);
|
// int memberRoleRemoveCount = removeMemberAndRole(removeMemberUserIds, memberRole);
|
||||||
log.info("全量更新取消会员完成,取消会员{}个,删除会员角色{}个", removeMemberUserIds.stream().filter(Objects::nonNull).distinct().count(), memberRoleRemoveCount);
|
// log.info("全量更新取消会员完成,取消会员{}个,删除会员角色{}个", removeMemberUserIds.stream().filter(Objects::nonNull).distinct().count(), memberRoleRemoveCount);
|
||||||
|
|
||||||
// 全量更新后统一补齐角色:所有人补公共角色,所有会员补会员角色;仅新增缺失角色,不重复插入。
|
// 全量更新后统一补齐角色:所有人补公共角色,所有会员补会员角色;仅新增缺失角色,不重复插入。
|
||||||
List<Sys_user> latestUsers = dao.query(Sys_user.class, Cnd.NEW());
|
List<Sys_user> latestUsers = dao.query(Sys_user.class, Cnd.NEW());
|
||||||
@@ -485,8 +487,6 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
|||||||
log.info("全量更新用户数据完成,耗时: {} 毫秒", (endTime - startTime));
|
log.info("全量更新用户数据完成,耗时: {} 毫秒", (endTime - startTime));
|
||||||
|
|
||||||
return "更新完成: 新增用户 " + needInitUserList.size() + " 个, 更新用户 " + needDoUpdateList.size()
|
return "更新完成: 新增用户 " + needInitUserList.size() + " 个, 更新用户 " + needDoUpdateList.size()
|
||||||
+ " 个, 取消会员 " + removeMemberUserIds.stream().filter(Objects::nonNull).distinct().count()
|
|
||||||
+ " 个, 删除会员角色 " + memberRoleRemoveCount
|
|
||||||
+ " 个, 新增公共角色 " + publicRoleAddCount + " 个, 新增会员角色 " + memberRoleAddCount + " 个";
|
+ " 个, 新增公共角色 " + publicRoleAddCount + " 个, 新增会员角色 " + memberRoleAddCount + " 个";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user