Sfoglia il codice sorgente

Merge branch 'wanghaicheng' of lift-manager/lift-server into develop

wanghaicheng 5 anni fa
parent
commit
bc3f489923

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

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

+ 1 - 3
lift-common/src/main/java/cn.com.ty.lift.common/constants/SqlConstants.java

@@ -173,11 +173,9 @@ public interface SqlConstants {
             "<script>" +
                     " update project_user set user_id=#{userId} where " +
                     " mt_company_id=#{mtCompanyId} and user_role = 'REGION_DIRECTOR'" +
-                    "   <if test=\"projectIds != null and projectIds.size > 0 \">" +
-                    "           and project_id in" +
+                    "        and project_id in" +
                     "     <foreach item='item' index='index' collection='projectIds' open='(' separator=',' close=')'>" +
                     "        #{item}" +
                     "     </foreach>" +
-                    " </if>" +
                     "</script>";
 }

+ 2 - 2
lift-enterprise-service/src/main/java/cn/com/ty/lift/enterprise/region/dao/mapper/RegionMapper.java

@@ -47,8 +47,8 @@ public interface RegionMapper extends BaseMapper<Region> {
     @Select("select id,area_name areaName from region where mt_company_id=#{mtCompanyId} and area_name like #{areaName}")
     List<RegionBO> selectIdAndNameLikeName(Long mtCompanyId, String areaName);
 
-    @Select("select project_id from project_user where user_id = #{userId} and mt_company_id = #{mtCompanyId} and user_role = 'REGION_DIRECTOR'")
-    List<Long> selectProjectIdByRegionDirectorId(Long userId, Long mtCompanyId);
+    @Select("select pu.project_id from project_user pu left join project p on pu.project_id=p.id where pu.user_id = #{userId} and pu.mt_company_id = #{mtCompanyId} and pu.user_role = 'REGION_DIRECTOR' and p.region_id=#{regionId}")
+    List<Long> selectProjectIdByRegionDirectorId(Long userId, Long mtCompanyId, Long regionId);
 
     @Update(SqlConstants.UPDATE_REGION_DIRECTOR)
     void updateRegionDirector(List<Long> projectIds, Long userId, Long mtCompanyId);

+ 3 - 3
lift-enterprise-service/src/main/java/cn/com/ty/lift/enterprise/region/service/impl/RegionServiceImpl.java

@@ -185,9 +185,9 @@ public class RegionServiceImpl extends ServiceImpl<RegionMapper, Region> impleme
         region.setUpdateTime(LocalDateTime.now());
         //如果区域主管更改了,发推送消息,修改project_user表内的区域主管信息
         if (!byId.getUserId().equals(region.getUserId())) {
-            List<Long> projects = baseMapper.selectProjectIdByRegionDirectorId(byId.getUserId(), byId.getMtCompanyId());
-            if (projects != null && projects.size() > 0) {
-                baseMapper.updateRegionDirector(projects, region.getUserId(), byId.getMtCompanyId());
+            List<Long> projectIds = baseMapper.selectProjectIdByRegionDirectorId(byId.getUserId(), byId.getMtCompanyId(),byId.getId());
+            if (projectIds != null && projectIds.size() > 0) {
+                baseMapper.updateRegionDirector(projectIds, region.getUserId(), byId.getMtCompanyId());
             }
             String oldUser = baseMapper.selectNameByUserId(byId.getUserId());
             String newUser = baseMapper.selectNameByUserId(region.getUserId());