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