Browse Source

修复<批量更新维保负责人,项目中没有新增这个新的维保工>问题

wanghaicheng 5 years ago
parent
commit
bfeae796ab

+ 44 - 0
lift-business-service/src/main/java/cn/com/ty/lift/business/project/service/ProjectLiftRelevanceService.java

@@ -305,6 +305,50 @@ public class ProjectLiftRelevanceService extends ServiceImpl<ProjectLiftRelevanc
     @Transactional(rollbackFor = Exception.class)
     public RestResponse batchModify(ProjectRequest request) {
         Long newWorkerId = request.getWorkerId();
+
+        //获取前端传过来的所有项目id
+        List<Long> projectIds = request.getList().stream().
+                map(ProjectLiftRelevance::getProjectId).
+                distinct().
+                collect(Collectors.toList());
+        //查询公司项目下的成员
+        List<ProjectUser> projectUsers = projectUserService.list(Wrappers.<ProjectUser>query().
+                select("mt_company_id", "user_id", "project_id").
+                eq("mt_company_id", request.getMtCompanyId()).
+                in("project_id", projectIds));
+        //创建待插入的项目成员列表
+        ArrayList<ProjectUser> insertProjectUsers = new ArrayList<>();
+        //循环前端传过来的项目电梯信息
+        request.getList().forEach(projectLiftRelevance -> {
+            //查询项目用户关联表中是否有这个关联
+            for (ProjectUser projectUser : projectUsers) {
+                boolean existCompanyProject = projectLiftRelevance.getProjectId().equals(projectUser.getProjectId()) &&
+                        projectLiftRelevance.getMtCompanyId().equals(projectUser.getMtCompanyId());
+                //如果用户在公司项目下且有关联,就终止循环
+                if (existCompanyProject && projectLiftRelevance.getWorkerId().equals(projectUser.getUserId())) {
+                    break;
+                }
+                //如果用户不存在关联表中且用户应在项目中,就将用户放入待插入列表,并终止循环
+                if (existCompanyProject) {
+                    ProjectUser pu = new ProjectUser();
+                    pu.setProjectId(projectLiftRelevance.getProjectId());
+                    pu.setUserId(newWorkerId);
+                    pu.setMtCompanyId(projectLiftRelevance.getMtCompanyId());
+                    pu.setUserRole(CommonEnum.DefaultRole.MTWORK.getCode());
+                    pu.setCreatorId(10000L);
+                    pu.setUpdateId(10000L);
+                    insertProjectUsers.add(pu);
+                    break;
+                }
+            }
+        });
+        //批量保存项目用户关联信息
+        if (insertProjectUsers.size() > 0) {
+            if (!projectUserService.saveBatch(insertProjectUsers)) {
+                throw new BusinessBasicException("数据库保存失败");
+            }
+        }
+
         //获取项目电梯关联信息
         List<ProjectLiftRelevance> projectLiftRelevances = request.getList();
         projectLiftRelevances.forEach(entry -> entry.setWorkerId(request.getWorkerId()));