|
@@ -31,6 +31,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.jms.core.JmsMessagingTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -46,6 +47,7 @@ import java.util.stream.Collectors;
|
|
|
* @description 项目电梯关联业务层
|
|
|
*/
|
|
|
@Service
|
|
|
+@Slf4j
|
|
|
public class ProjectLiftRelevanceService extends ServiceImpl<ProjectLiftRelevanceMapper, ProjectLiftRelevance> {
|
|
|
|
|
|
@Resource
|
|
@@ -305,6 +307,52 @@ 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));
|
|
|
+ //创建待插入的项目成员列表
|
|
|
+ Set<ProjectUser> insertProjectUsers = new HashSet<>();
|
|
|
+ //循环前端传过来的项目信息
|
|
|
+ log.info("前端传过来的项目id" + projectIds);
|
|
|
+ projectIds.forEach(projectId -> {
|
|
|
+ //查询项目用户关联表中是否有这个关联
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ //批量保存项目用户关联信息
|
|
|
+ log.info("批量保存项目用户关联信息" + insertProjectUsers.size());
|
|
|
+ if (insertProjectUsers.size() > 0) {
|
|
|
+ if (!projectUserService.saveBatch(insertProjectUsers)) {
|
|
|
+ throw new BusinessBasicException("数据库保存失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
//获取项目电梯关联信息
|
|
|
List<ProjectLiftRelevance> projectLiftRelevances = request.getList();
|
|
|
projectLiftRelevances.forEach(entry -> entry.setWorkerId(request.getWorkerId()));
|