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

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

wanghaicheng пре 5 година
родитељ
комит
77d33e0bac

+ 54 - 11
lift-business-service/src/main/java/cn/com/ty/lift/business/project/service/ProjectLiftRelevanceService.java

@@ -1,11 +1,11 @@
 package cn.com.ty.lift.business.project.service;
 
 import cn.com.ty.lift.business.capital.dao.mapper.CommonMapper;
+import cn.com.ty.lift.business.framework.BusinessBasicException;
 import cn.com.ty.lift.business.framework.util.MessageUtils;
 import cn.com.ty.lift.business.library.dao.entity.Lift;
 import cn.com.ty.lift.business.library.dao.entity.model.request.LiftRequest;
 import cn.com.ty.lift.business.library.service.LiftService;
-import cn.com.ty.lift.business.library.service.PlatformCompanyLiftRelevanceService;
 import cn.com.ty.lift.business.maintenance.dao.entity.MaintenancePlan;
 import cn.com.ty.lift.business.maintenance.service.MaintenancePlanService;
 import cn.com.ty.lift.business.project.dao.entity.ProjectLiftRelevance;
@@ -29,6 +29,7 @@ import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 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 org.springframework.jms.core.JmsMessagingTemplate;
 import org.springframework.stereotype.Service;
@@ -304,15 +305,57 @@ public class ProjectLiftRelevanceService extends ServiceImpl<ProjectLiftRelevanc
     @Transactional(rollbackFor = Exception.class)
     public RestResponse batchModify(ProjectRequest request) {
         Long newWorkerId = request.getWorkerId();
-        List<ProjectLiftRelevance> list = request.getList();
-        list.forEach(entry -> entry.setWorkerId(request.getWorkerId()));
-        boolean result = updateBatchById(list);
+        //获取前端传过来的所有项目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 -> {
+            //查询项目用户关联表中是否有这个关联
+            boolean hasUser = false;
+            for (ProjectUser projectUser : projectUsers) {
+                if (projectLiftRelevance.getProjectId().equals(projectUser.getProjectId()) &&
+                        projectLiftRelevance.getMtCompanyId().equals(projectUser.getMtCompanyId()) &&
+                        projectUser.getUserId().equals(projectLiftRelevance.getWorkerId())) {
+                    hasUser = true;
+                    break;
+                }
+            }
+            //如果项目用户关联表中没有这个用户
+            if (!hasUser) {
+                ProjectUser projectUser = new ProjectUser();
+                projectUser.setProjectId(projectLiftRelevance.getProjectId());
+                projectUser.setUserId(newWorkerId);
+                projectUser.setMtCompanyId(projectLiftRelevance.getMtCompanyId());
+                projectUser.setUserRole(CommonEnum.DefaultRole.MTWORK.getCode());
+                projectUser.setCreatorId(10000L);
+                projectUser.setUpdateId(10000L);
+                insertProjectUsers.add(projectUser);
+            }
+        });
+        //批量保存项目用户关联信息
+        if (!projectUserService.saveBatch(projectUsers)) {
+            throw new BusinessBasicException("数据库保存失败");
+        }
+
+        //获取项目电梯关联信息
+        List<ProjectLiftRelevance> projectLiftRelevances = request.getList();
+        projectLiftRelevances.forEach(entry -> entry.setWorkerId(request.getWorkerId()));
+        boolean result = this.updateBatchById(projectLiftRelevances);
         if (!result) return RestResponse.fail(MessageUtils.get("msg.modify.fail"));
-        for (ProjectLiftRelevance entry : list) {
+        for (ProjectLiftRelevance entry : projectLiftRelevances) {
             sendMessage(entry.getProjectId(), entry.getMtCompanyId(), entry.getLiftId(), entry.getWorkerId(), newWorkerId);
         }
         //查询未完成的维保任务
-        List<Long> liftIdList = list.stream().map(ProjectLiftRelevance::getLiftId).collect(Collectors.toList());
+        List<Long> liftIdList = projectLiftRelevances.stream().map(ProjectLiftRelevance::getLiftId).collect(Collectors.toList());
         if (CollUtil.isNotEmpty(liftIdList)) {
             List<MaintenancePlan> planList = maintenancePlanService.getPlanList(request.getMtCompanyId(), liftIdList);
             //修改未完成的维保计划为新的维保负责人
@@ -351,9 +394,9 @@ public class ProjectLiftRelevanceService extends ServiceImpl<ProjectLiftRelevanc
     }
 
     /**
-     * @param projectId 项目id
+     * @param projectId   项目id
      * @param mtCompanyId 公司id
-     * @param userList 维保工列表
+     * @param userList    维保工列表
      * @return 关联电梯列表
      * @description 根据项目id和公司id,维保工列表查询关联电梯列表
      * @date 2020/6/15 11:19 上午
@@ -410,10 +453,10 @@ public class ProjectLiftRelevanceService extends ServiceImpl<ProjectLiftRelevanc
             return RestResponse.fail("用户存在关联电梯,无法取消");
         }
         boolean removeFlag = projectUserService.remove(new QueryWrapper<ProjectUser>()
-              .eq("project_id", request.getProjectId())
-              .eq("user_id", request.getWorkerId())
+                .eq("project_id", request.getProjectId())
+                .eq("user_id", request.getWorkerId())
         );
-        if(!removeFlag) {
+        if (!removeFlag) {
             return RestResponse.fail("取消关联失败");
         }
         return RestResponse.success(ApiConstants.RESULT_SUCCESS, "操作成功");