Преглед изворни кода

批量更换维保负责人

wang-hai-cheng пре 4 година
родитељ
комит
44a43a77b9

+ 22 - 20
lift-business-service/src/main/java/cn/com/ty/lift/business/project/service/ProjectLiftRelevanceService.java

@@ -39,6 +39,7 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import javax.annotation.Resource;
 import java.util.*;
+import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.stream.Collectors;
 
 /**
@@ -323,30 +324,31 @@ public class ProjectLiftRelevanceService extends ServiceImpl<ProjectLiftRelevanc
         //循环前端传过来的项目信息
         log.info("前端传过来的项目id" + projectIds);
         projectIds.forEach(projectId -> {
+            //用户当前是否存在项目中
+            AtomicBoolean hasUser = new AtomicBoolean(false);
             //查询项目用户关联表中是否有这个关联
-            for (ProjectUser projectUser : projectUsers) {
-                boolean existCompanyProject = projectId.equals(projectUser.getProjectId()) &&
-                        request.getMtCompanyId().equals(projectUser.getMtCompanyId());
-                //如果用户在公司项目下且有关联,就终止循环
-                if (existCompanyProject && newWorkerId.equals(projectUser.getUserId())) {
-                    break;
-                }
-                //如果用户不存在关联表中且用户应在项目中,就将用户放入待插入列表,并终止循环
-                if (existCompanyProject) {
-                    ProjectUser pu = new ProjectUser();
-                    pu.setProjectId(projectId);
-                    pu.setUserId(newWorkerId);
-                    pu.setMtCompanyId(request.getMtCompanyId());
-                    pu.setUserRole(CommonEnum.DefaultRole.MTWORK.getCode());
-                    pu.setCreatorId(10000L);
-                    pu.setUpdateId(10000L);
-                    insertProjectUsers.add(pu);
-                    break;
-                }
+            projectUsers.stream().
+                    filter(p -> projectId.equals(p.getProjectId()) && request.getMtCompanyId().equals(p.getMtCompanyId())).
+                    forEach(p -> {
+                        //如果存在项目中,且列表中有这个用户
+                        if (newWorkerId.equals(p.getUserId())) {
+                            hasUser.set(true);
+                        }
+                    });
+            //如果用户不存在关联表中且用户应在项目中,就将用户放入待插入列表,并终止循环
+            if ( !hasUser.get()) {
+                ProjectUser pu = new ProjectUser();
+                pu.setProjectId(projectId);
+                pu.setUserId(newWorkerId);
+                pu.setMtCompanyId(request.getMtCompanyId());
+                pu.setUserRole(CommonEnum.DefaultRole.MTWORK.getCode());
+                pu.setCreatorId(10000L);
+                pu.setUpdateId(10000L);
+                insertProjectUsers.add(pu);
             }
         });
         //批量保存项目用户关联信息
-        log.info("批量保存项目用户关联信息" + insertProjectUsers.size());
+        log.info("批量保存项目用户关联信息" + insertProjectUsers);
         if (insertProjectUsers.size() > 0) {
             if (!projectUserService.saveBatch(insertProjectUsers)) {
                 throw new BusinessBasicException("数据库保存失败");