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

feat: 修改了项目-成员、成员-项目、项目-项目的实现

181250114 пре 4 година
родитељ
комит
a5006fafdc

+ 94 - 3
src/main/java/com/seecoder/dataanalysis/analysis/impl/DevcloudDataAnalysisServiceImpl.java

@@ -370,9 +370,37 @@ public class DevcloudDataAnalysisServiceImpl implements DevcloudDataAnalysisServ
         devcloudProject.setUserIds(memberIds);
         devcloudProjectDao.save(devcloudProject);
 
+        Integer userId = addProjectDTO.getUserId();
+
+        //查询该项目是否有关联项目,如果有关联项目,需要把该成员也加入关联项目中
+        Optional<ProjectRelate> result2 = projectRelateDao.findById(projectId);
+        Integer relateId = -1;
+        //如果存在关联项目
+        if(result2.isPresent()){
+            relateId = projectRelateDao.findById(projectId).get().getRelateId();
+        }
+
+        DevcloudProject relateProject;
+        if(relateId != -1){
+            Optional<DevcloudProject> result3 = devcloudProjectDao.findById(relateId);
+            if(!result3.isPresent()){
+                relateProject = new DevcloudProject();
+                relateProject.setProjectId(relateId);
+            }else {
+                relateProject = devcloudProjectDao.findById(relateId).get();
+            }
+
+            List<Integer> relateMembers = relateProject.getUserIds();
+            if(!relateMembers.contains(userId)){
+                relateMembers.add(userId);
+                relateProject.setUserIds(relateMembers);
+            }
+
+            devcloudProjectDao.save(relateProject);
+        }
+
         //处理完项目-用户关系,现在处理用户-项目关系
         //所有的devcloudUser都在此处创建
-        Integer userId = addProjectDTO.getUserId();
         DevcloudUser devcloudUser;
 
         Optional<DevcloudUser> result1 = devcloudUserDao.findById(userId);
@@ -388,18 +416,22 @@ public class DevcloudDataAnalysisServiceImpl implements DevcloudDataAnalysisServ
         if(!projectIds.contains(addProjectDTO.getProjectId())){
             projectIds.add(addProjectDTO.getProjectId());
         }
+        if(relateId!=-1){
+            if(!projectIds.contains(relateId)){
+                projectIds.add(relateId);
+            }
+        }
 
         devcloudUser.setProjectIds(projectIds);
         devcloudUserDao.save(devcloudUser);
 
-        //查询该项目是否有关联项目,如果有关联项目,需要把
-
         return devcloudProject;
     }
 
     @Override
     public ProjectRelate updateDevInfoType109(RelateProjectDTO relateProjectDTO){
         Integer projectAId = relateProjectDTO.getProjectAId();
+        Integer projectBId = relateProjectDTO.getProjectBId();
         ProjectRelate projectRelate;
 
         Optional<ProjectRelate> result = projectRelateDao.findById(projectAId);
@@ -416,6 +448,65 @@ public class DevcloudDataAnalysisServiceImpl implements DevcloudDataAnalysisServ
         }
 
         //增加关联后,A和B中的成员应该相同,每个成员也应该加入
+        //先将A、B项目中的成员同步
+        DevcloudProject projectA, projectB;
+        Optional<DevcloudProject> result1 = devcloudProjectDao.findById(projectAId);
+        if(!result1.isPresent()){
+            projectA = new DevcloudProject();
+            projectA.setProjectId(projectAId);
+        }else {
+            projectA = devcloudProjectDao.findById(projectAId).get();
+        }
+
+        Optional<DevcloudProject> result2 = devcloudProjectDao.findById(projectBId);
+        if(!result2.isPresent()){
+            projectB = new DevcloudProject();
+            projectB.setProjectId(projectBId);
+        }else {
+            projectB = devcloudProjectDao.findById(projectBId).get();
+        }
+
+        List<Integer> totalMembers = new ArrayList<>();
+        for(Integer id : projectA.getUserIds()){
+            if(!totalMembers.contains(id)){
+                totalMembers.add(id);
+            }
+        }
+        for(Integer id : projectB.getUserIds()){
+            if(!totalMembers.contains(id)){
+                totalMembers.add(id);
+            }
+        }
+
+        projectA.setUserIds(totalMembers);
+        projectB.setUserIds(new ArrayList<>(totalMembers));
+
+        devcloudProjectDao.save(projectA);
+        devcloudProjectDao.save(projectB);
+
+        //然后将小组成员遍历,将projectA、B都添加
+        for(Integer userId : totalMembers){
+            DevcloudUser devcloudUser;
+            Optional<DevcloudUser> result3 = devcloudUserDao.findById(userId);
+            if(!result3.isPresent()){
+                devcloudUser = new DevcloudUser();
+                devcloudUser.setUserId(userId);
+            }else {
+                devcloudUser = devcloudUserDao.findById(userId).get();
+            }
+
+            List<Integer> projectIds = devcloudUser.getProjectIds();
+            if(!projectIds.contains(projectAId)){
+                projectIds.add(projectAId);
+            }
+            if(!projectIds.contains(projectBId)){
+                projectIds.add(projectBId);
+            }
+
+            devcloudUser.setProjectIds(projectIds);
+            devcloudUserDao.save(devcloudUser);
+        }
+
 
         return projectRelate;
     }

+ 9 - 7
src/test/java/com/seecoder/dataanalysis/devcloud/impl/DevcloudDataAnalysisServiceImplTest.java

@@ -202,23 +202,25 @@ public class DevcloudDataAnalysisServiceImplTest {
     void type108(){
         AddProjectDTO addProjectDTO = new AddProjectDTO();
         addProjectDTO.setProjectId(13);
-//        List<Integer> members = new ArrayList<>();
-//        members.add(1);
-//        members.add(2);
-        addProjectDTO.setUserId(3);
+        addProjectDTO.setUserId(1035);
 
         AddProjectDTO addProjectDTO1 = new AddProjectDTO();
         addProjectDTO1.setProjectId(13);
-        addProjectDTO1.setUserId(4);
+        addProjectDTO1.setUserId(1036);
 
         AddProjectDTO addProjectDTO2 = new AddProjectDTO();
-        addProjectDTO2.setProjectId(13);
-        addProjectDTO2.setUserId(10);
+        addProjectDTO2.setProjectId(12);
+        addProjectDTO2.setUserId(1041);
+
+        AddProjectDTO addProjectDTO3 = new AddProjectDTO();
+        addProjectDTO3.setProjectId(12);
+        addProjectDTO3.setUserId(1042);
 
 
         devcloudDataAnalysisService.updateDevInfoType108(addProjectDTO);
         devcloudDataAnalysisService.updateDevInfoType108(addProjectDTO1);
         devcloudDataAnalysisService.updateDevInfoType108(addProjectDTO2);
+        devcloudDataAnalysisService.updateDevInfoType108(addProjectDTO3);
     }
 
     @Test