diff --git a/src/main/java/io/v/nutz/zhgh/data/service/impl/SourceUserServiceImpl.java b/src/main/java/io/v/nutz/zhgh/data/service/impl/SourceUserServiceImpl.java index 9bc7e42..cadc3d5 100644 --- a/src/main/java/io/v/nutz/zhgh/data/service/impl/SourceUserServiceImpl.java +++ b/src/main/java/io/v/nutz/zhgh/data/service/impl/SourceUserServiceImpl.java @@ -1,15 +1,19 @@ package io.v.nutz.zhgh.data.service.impl; -import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import io.v.nutz.base.service.AsyncService; +import io.v.nutz.base.service.impl.ViServiceImpl; import io.v.nutz.base.utils.Roles; -import io.v.nutz.sys.models.Sys_unit; +import io.v.nutz.sys.models.Sys_user; import io.v.nutz.sys.models.Sys_user_role; +import io.v.nutz.sys.services.SysRoleService; import io.v.nutz.sys.services.SysUnitService; import io.v.nutz.sys.services.SysUserRoleService; +import io.v.nutz.sys.services.SysUserService; +import io.v.nutz.web.commons.controller.userpartupdate.models.UserPartUp; +import io.v.nutz.web.commons.controller.userpartupdate.service.UserPatUpService; import io.v.nutz.web.commons.utils.ShiroUtil; import io.v.nutz.zhgh.data.constant.SourceData; import io.v.nutz.zhgh.data.constant.UserChangeType; @@ -17,25 +21,14 @@ import io.v.nutz.zhgh.data.model.UserHistory; import io.v.nutz.zhgh.data.model.UserSource; import io.v.nutz.zhgh.data.service.HistoryUserService; import io.v.nutz.zhgh.data.service.SourceUserService; -import io.v.nutz.base.lang.Enum; import io.v.nutz.zhgh.member.UserMode; -import io.v.nutz.base.service.AsyncService; -import io.v.nutz.base.service.impl.ViServiceImpl; -import io.v.nutz.sys.models.Sys_user; -import io.v.nutz.sys.services.SysRoleService; -import io.v.nutz.sys.services.SysUserService; -import io.v.nutz.web.commons.controller.userpartupdate.models.UserPartUp; -import io.v.nutz.web.commons.controller.userpartupdate.service.UserPatUpService; import io.v.nutz.zhgh.member.constant.MemberChangeOrigin; -import io.v.nutz.zhgh.member.handle.MemberChangeHandle; -import io.v.nutz.zhgh.member.model.MemberChangeRecord; import lombok.extern.slf4j.Slf4j; import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; import org.nutz.dao.FieldFilter; import org.nutz.dao.Sqls; -import org.nutz.dao.entity.Record; import org.nutz.dao.sql.Sql; import org.nutz.dao.util.Daos; import org.nutz.ioc.aop.Aop; @@ -127,9 +120,9 @@ public class SourceUserServiceImpl extends ViServiceImpl implements AtomicReference filterColumnDao = new AtomicReference<>(dao()); //全部更新时,要修改的用户表 - List needDoUpdateList = new ArrayList<>(); + List needDoUpdateList = new CopyOnWriteArrayList<>(); //新增的用户 - List needInitUserList = new ArrayList<>(); + List needInitUserList = new CopyOnWriteArrayList<>(); //添加角色的用户 List userRoles = new ArrayList<>(); @@ -159,6 +152,8 @@ public class SourceUserServiceImpl extends ViServiceImpl implements u.setId(user == null ? source.getId() : user.getId()); if (user != null) { needDoUpdateList.add(u); + } else { + needInitUserList.add(u); } } case "add" -> { diff --git a/src/main/java/io/v/nutz/zhgh/healthCheckup/service/impl/HealthCheckupProjectServiceImpl.java b/src/main/java/io/v/nutz/zhgh/healthCheckup/service/impl/HealthCheckupProjectServiceImpl.java index a5884c2..7c02de6 100644 --- a/src/main/java/io/v/nutz/zhgh/healthCheckup/service/impl/HealthCheckupProjectServiceImpl.java +++ b/src/main/java/io/v/nutz/zhgh/healthCheckup/service/impl/HealthCheckupProjectServiceImpl.java @@ -133,38 +133,33 @@ public class HealthCheckupProjectServiceImpl extends ViServiceImpl allGroupUsers = getHealthCheckupUserListByProject(healthCheckupProject); - //已选取人员 - List selectionList = dao().query(HealthCheckupUserSelection.class, Cnd.where("projectId", "=", healthCheckupProject.getId())); -// Set selectUserIds = selectionList.stream().map(HealthCheckupUserSelection::getSelectUserId).collect(Collectors.toSet()); - //已选取人员不在组别里面的人 - - // 找出在selectionList中但不在allGroupUsers中的userId,这部分人要删除体检信息 - List needDeleteUserIds = selectionList.stream() - .map(HealthCheckupUserSelection::getSelectUserId) + //已选取人员,选择表的人员 + List userList = dao().query(HealthCheckupUser.class, Cnd.where("projectId", "=", healthCheckupProject.getId())); + // 找出在 userList 中但不在allGroupUsers中的userId,这部分人要删除体检信息 + List needDeleteUserIds = userList.stream() + .map(HealthCheckupUser::getUserId) .filter(selectUserId -> allGroupUsers.stream() .noneMatch(user -> user.getUserId().equals(selectUserId))) .collect(Collectors.toList()); //获取生成名单中没有的用户,这部分要添加 Sql sql = Sqls.create("select userId from health_checkup_user where projectId = @projectId").setParam("projectId", healthCheckupProject.getId()); - List sourceUserMaps = (List) Daos.query(dao(), sql.toString(), Sqls.callback.maps()); - Set sourceUserIds = sourceUserMaps.stream().map(v -> v.getString("userId")).collect(Collectors.toSet()); + List sourceSelectionUserMaps = (List) Daos.query(dao(), sql.toString(), Sqls.callback.maps()); + Set sourceSelectionUserIds = sourceSelectionUserMaps.stream().map(v -> v.getString("userId")).collect(Collectors.toSet()); //找出原来名单中没有的人,没有的就可以新增 - List canInsertUsers = allGroupUsers.stream().filter(v -> !sourceUserIds.contains(v.getId())).collect(Collectors.toList()); + List canInsertSelectionUsers = allGroupUsers.stream().filter(v -> !sourceSelectionUserIds.contains(v.getId())).collect(Collectors.toList()); //过滤出原有名单中没有的,可以新增 - List needInsertUsers = canInsertUsers.parallelStream() - .filter(v -> !sourceUserIds.contains(v.getUserId())) + List needInsertSelectionUsers = canInsertSelectionUsers.parallelStream() + .filter(v -> !sourceSelectionUserIds.contains(v.getUserId())) .collect(Collectors.toList()); -// List needInsertUsers = canInsertUsers.stream().filter(v -> !healthUserIdList.contains(v.getUserId())).collect(Collectors.toList()); - - List userSelectionIds = selectionList.stream().filter(needDeleteUserIds::contains).map(HealthCheckupUserSelection::getId).collect(Collectors.toList()); + List userSelectionIds = userList.stream().filter(needDeleteUserIds::contains).map(HealthCheckupUser::getId).collect(Collectors.toList()); dao().clear(HealthCheckupUser.class, Cnd.where("userId", "in", needDeleteUserIds)); dao().clear(HealthCheckupUserSelection.class, Cnd.where("selectUserId", "in", needDeleteUserIds)); dao().clear(HealthCheckupUserCompanion.class, Cnd.where("userSelectionId", "in", userSelectionIds)); - manyAddOrRenewUtil.addOrRenew(needInsertUsers, true); + manyAddOrRenewUtil.addOrRenew(needInsertSelectionUsers, true); }