|
@@ -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()));
|