This commit is contained in:
=
2026-07-10 17:09:42 +08:00
parent a0c5cb6ec8
commit c4a19e15c9
@@ -71,10 +71,10 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
*/
private static final Set<String> 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);
}
/**
* 判断本次人员状态是否需要取消会员身份。
*/
/*
// 全量更新当前只增加会员,不取消会员身份和会员角色。
private boolean shouldRemoveMember(String userState) {
return StrUtil.isNotBlank(userState) && REMOVE_MEMBER_USER_STATES.contains(userState);
}
*/
/**
* 人员源数据只负责基础人员信息,会员缴费及会费类字段由会员业务维护。
@@ -213,9 +213,8 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
return insertCount;
}
/**
* 批量取消会员身份并删除会员角色,仅用于全量更新中明确需要退会的人员状态。
*/
/*
// 全量更新当前只增加会员,不取消会员身份和会员角色。
private int removeMemberAndRole(List<String> userIds, Sys_role memberRole) {
if (Lang.isEmpty(userIds) || memberRole == null) {
return 0;
@@ -232,6 +231,7 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
}
return removeRoleCount;
}
*/
/**
* 全量更新用户数据
@@ -273,7 +273,7 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
List<Sys_user> needInitUserList = new CopyOnWriteArrayList<>();
List<Sys_user_history> histories = new CopyOnWriteArrayList<>();
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) {
@@ -284,7 +284,7 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
Sys_user u = new Sys_user();
BeanUtils.copyProperties(source, u);
boolean addMember = shouldAddMember(source.getUserState());
boolean removeMember = shouldRemoveMember(source.getUserState());
// boolean removeMember = shouldRemoveMember(source.getUserState());
if (user == null) {
// 新增用户,初始化数据
@@ -297,9 +297,10 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
if (addMember) {
u.setMember(true);
addMemberUserIds.add(u.getId());
} else if (removeMember) {
u.setMember(false);
}
// else if (removeMember) {
// u.setMember(false);
// }
needInitUserList.add(u);
} else {
// 修改现有用户 - 根据工号判断是原有的人
@@ -308,10 +309,11 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
if (addMember) {
u.setMember(true);
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);
}
@@ -409,8 +411,8 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
return "更新失败: " + e.getMessage();
}
int memberRoleRemoveCount = removeMemberAndRole(removeMemberUserIds, memberRole);
log.info("全量更新取消会员完成,取消会员{}个,删除会员角色{}个", removeMemberUserIds.stream().filter(Objects::nonNull).distinct().count(), memberRoleRemoveCount);
// int memberRoleRemoveCount = removeMemberAndRole(removeMemberUserIds, memberRole);
// log.info("全量更新取消会员完成,取消会员{}个,删除会员角色{}个", removeMemberUserIds.stream().filter(Objects::nonNull).distinct().count(), memberRoleRemoveCount);
// 全量更新后统一补齐角色:所有人补公共角色,所有会员补会员角色;仅新增缺失角色,不重复插入。
List<Sys_user> latestUsers = dao.query(Sys_user.class, Cnd.NEW());
@@ -485,8 +487,6 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
log.info("全量更新用户数据完成,耗时: {} 毫秒", (endTime - startTime));
return "更新完成: 新增用户 " + needInitUserList.size() + " 个, 更新用户 " + needDoUpdateList.size()
+ " 个, 取消会员 " + removeMemberUserIds.stream().filter(Objects::nonNull).distinct().count()
+ " 个, 删除会员角色 " + memberRoleRemoveCount
+ " 个, 新增公共角色 " + publicRoleAddCount + " 个, 新增会员角色 " + memberRoleAddCount + " 个";
}