Browse Source

解决问题-关联查询

黄远 5 years ago
parent
commit
45389f60ea

+ 6 - 9
lift-business-service/src/main/java/cn/com/ty/lift/business/project/controller/ProjectRelevanceController.java

@@ -38,7 +38,7 @@ public class ProjectRelevanceController {
      * @date 2019/12/26 4:27 PM
      */
     @PostMapping("list")
-    @Validation(fields = {"workerId"})
+    @Validation(fields = {"workerId", "projectId"})
     public RestResponse relevanceList(@Val @RequestBody ProjectRequest request) {
         IPage<ProjectRelevanceResponse> page = projectLiftRelevanceService.relevanceList(request);
         if (CollUtil.isEmpty(page.getRecords())) {
@@ -76,17 +76,14 @@ public class ProjectRelevanceController {
     }
 
     /**
-     * @param entry 项目关联主键id
+     * @param request 项目id 用户id
      * @return 1.成功, 0.失败, 消息描述
      * @description 删除项目关联数据
      * @date 2020/2/12 5:10 下午
      */
-    @PostMapping("remove")
-    public RestResponse remove(@RequestBody ProjectLiftRelevance entry) {
-        boolean result = projectLiftRelevanceService.remove(entry.getId());
-        if (result) {
-            return RestResponse.success(null, MessageUtils.get("msg.delete.success"));
-        }
-        return RestResponse.fail(MessageUtils.get("msg.delete.fail"));
+    @PostMapping("cancelRelevance")
+    @Validation(fields = {"workId", "projectId"})
+    public RestResponse cancelRelevance(@Val @RequestBody ProjectRequest request) {
+        return projectLiftRelevanceService.cancelRelevance(request);
     }
 }

+ 13 - 1
lift-business-service/src/main/java/cn/com/ty/lift/business/project/controller/ProjectUserController.java

@@ -28,6 +28,18 @@ public class ProjectUserController {
     @Resource
     private ProjectUserService projectUserService;
 
+    /**
+     * @param request 公司id 用户id
+     * @return 用户关联项目列表
+     * @description 获取用户关联项目列表
+     * @date 2020/5/26 3:57 下午
+     */
+    @PostMapping("relevanceProject")
+    @Validation(fields = {"mtCompanyId", "workerId"})
+    public RestResponse relevanceProject(@Val @RequestBody ProjectRequest request) {
+        return projectUserService.relevanceProject(request);
+    }
+
     /**
      * @param request projectId 项目ID
      * @return RestResponse userList项目组成员列表
@@ -37,7 +49,7 @@ public class ProjectUserController {
     @PostMapping("user/list")
     @Validation(fields = {"mtCompanyId", "id"})
     public RestResponse userList(@Val @RequestBody ProjectRequest request) {
-        List<ProjectUserResponse> userList = projectUserService.userList(request.getId(),request.getMtCompanyId());
+        List<ProjectUserResponse> userList = projectUserService.userList(request.getId(), request.getMtCompanyId());
         if (CollUtil.isEmpty(userList)) {
             return RestResponse.success();
         }

+ 1 - 1
lift-business-service/src/main/java/cn/com/ty/lift/business/project/dao/mapper/ProjectLiftRelevanceMapper.java

@@ -14,7 +14,7 @@ import org.apache.ibatis.annotations.Param;
  */
 public interface ProjectLiftRelevanceMapper extends BaseMapper<ProjectLiftRelevance> {
 
-    IPage<ProjectRelevanceResponse> selectListByUserId(IPage<ProjectRelevanceResponse> page, @Param("request") ProjectRequest request);
+    IPage<ProjectRelevanceResponse> selectListByUserIdAndProjectId(IPage<ProjectRelevanceResponse> page, @Param("request") ProjectRequest request);
 
     int count(@Param("mtCompanyId") Long mtCompanyId, @Param("projectStatus") Integer projectStatus);
 

+ 3 - 0
lift-business-service/src/main/java/cn/com/ty/lift/business/project/dao/mapper/ProjectUserMapper.java

@@ -3,6 +3,7 @@ package cn.com.ty.lift.business.project.dao.mapper;
 import cn.com.ty.lift.business.project.dao.entity.ProjectUser;
 import cn.com.ty.lift.business.project.dao.entity.model.ProjectAppUser;
 import cn.com.ty.lift.business.project.dao.entity.model.request.ProjectRequest;
+import cn.com.ty.lift.business.project.dao.entity.model.response.ProjectRelevanceResponse;
 import cn.com.ty.lift.business.project.dao.entity.model.response.ProjectUserResponse;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
@@ -27,4 +28,6 @@ public interface ProjectUserMapper extends BaseMapper<ProjectUser> {
     List<ProjectAppUser> findProjectUserListById(@Param("request") ProjectRequest request);
 
     int batchRemoveWithParams(ProjectRequest request);
+
+    List<ProjectRelevanceResponse> findProjectListByUserId(ProjectRequest request);
 }

+ 35 - 12
lift-business-service/src/main/java/cn/com/ty/lift/business/project/service/ProjectLiftRelevanceService.java

@@ -9,6 +9,7 @@ import cn.com.ty.lift.business.library.service.PlatformCompanyLiftRelevanceServi
 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;
+import cn.com.ty.lift.business.project.dao.entity.ProjectUser;
 import cn.com.ty.lift.business.project.dao.entity.Region;
 import cn.com.ty.lift.business.project.dao.entity.model.request.ProjectRequest;
 import cn.com.ty.lift.business.project.dao.entity.model.response.ProjectDetailResponse;
@@ -26,6 +27,7 @@ import cn.hutool.core.collection.CollUtil;
 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.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.jms.core.JmsMessagingTemplate;
@@ -104,7 +106,7 @@ public class ProjectLiftRelevanceService extends ServiceImpl<ProjectLiftRelevanc
 
     /**
      * @param mtCompanyId 公司id
-     * @param projectId 项目id
+     * @param projectId   项目id
      * @return 计算结果
      * @description 计算公司某项目下的电梯台量
      * @date 2020/5/20 9:54 上午
@@ -114,10 +116,10 @@ public class ProjectLiftRelevanceService extends ServiceImpl<ProjectLiftRelevanc
     }
 
     /**
-     * @param liftId   电梯id
-     * @param projectId 项目id
-     * @param id       平台企业电梯主键id
-     * @param workerId 维保工id
+     * @param liftId      电梯id
+     * @param projectId   项目id
+     * @param id          平台企业电梯主键id
+     * @param workerId    维保工id
      * @param mtCompanyId 公司id
      * @return projectLiftEntry
      * @description 新增项目电梯关联数据
@@ -193,7 +195,7 @@ public class ProjectLiftRelevanceService extends ServiceImpl<ProjectLiftRelevanc
 
     /**
      * @param mtCompanyId 公司id
-     * @param projectId 项目id
+     * @param projectId   项目id
      * @return List<ProjectLiftRelevance> 项目下电梯列表
      * @description 根据项目id和公司id查询项目下电梯
      * @date 2020/1/7 3:35 下午
@@ -234,8 +236,8 @@ public class ProjectLiftRelevanceService extends ServiceImpl<ProjectLiftRelevanc
     /**
      * @param projectId   项目ID
      * @param mtCompanyId 公司ID
-     * @param liftId 电梯ID
-     * @param workerId 原有维保负责人
+     * @param liftId      电梯ID
+     * @param workerId    原有维保负责人
      * @param newWorkerId 新维保负责人
      * @return
      * @description 电梯更换主要负责人消息推送
@@ -280,7 +282,7 @@ public class ProjectLiftRelevanceService extends ServiceImpl<ProjectLiftRelevanc
      * @date 2020/5/8 4:15 下午
      */
     @Transactional(rollbackFor = Exception.class)
-    public RestResponse batchModify(ProjectRequest request){
+    public RestResponse batchModify(ProjectRequest request) {
         Long newWorkerId = request.getWorkerId();
         List<ProjectLiftRelevance> list = request.getList();
         list.forEach(entry -> entry.setWorkerId(request.getWorkerId()));
@@ -334,14 +336,35 @@ public class ProjectLiftRelevanceService extends ServiceImpl<ProjectLiftRelevanc
      * @date 2019/12/26 4:27 PM
      */
     public IPage<ProjectRelevanceResponse> relevanceList(ProjectRequest request) {
-        return baseMapper.selectListByUserId(request.getPage(), request);
+        return baseMapper.selectListByUserIdAndProjectId(request.getPage(), request);
     }
 
 
-    public List<ProjectLiftRelevance> listByMtCompany(Long mtCompanyId){
+    public List<ProjectLiftRelevance> listByMtCompany(Long mtCompanyId) {
         QueryWrapper<ProjectLiftRelevance> queryWrapper = new QueryWrapper<>();
         LambdaQueryWrapper<ProjectLiftRelevance> lambdaQueryWrapper = queryWrapper.lambda();
-        lambdaQueryWrapper.eq(ProjectLiftRelevance::getMtCompanyId,mtCompanyId);
+        lambdaQueryWrapper.eq(ProjectLiftRelevance::getMtCompanyId, mtCompanyId);
         return list(lambdaQueryWrapper);
     }
+
+    /**
+     * @param
+     * @return
+     * @description 取消关联
+     * @date 2020/5/26 4:40 下午
+     */
+    public RestResponse cancelRelevance(ProjectRequest request) {
+        IPage<ProjectRelevanceResponse> page = relevanceList(request);
+        if (page != null && page.getRecords() != null && page.getRecords().size() > 0) {
+            return RestResponse.fail("用户存在关联电梯,无法取消");
+        }
+        boolean removeFlag = projectUserService.remove(new QueryWrapper<ProjectUser>()
+              .eq("project_id", request.getProjectId())
+              .eq("user_id", request.getWorkerId())
+        );
+        if(!removeFlag) {
+            return RestResponse.fail("取消关联失败");
+        }
+        return RestResponse.success();
+    }
 }

+ 6 - 0
lift-business-service/src/main/java/cn/com/ty/lift/business/project/service/ProjectUserService.java

@@ -3,6 +3,7 @@ package cn.com.ty.lift.business.project.service;
 import cn.com.ty.lift.business.framework.util.MessageUtils;
 import cn.com.ty.lift.business.project.dao.entity.ProjectUser;
 import cn.com.ty.lift.business.project.dao.entity.model.request.ProjectRequest;
+import cn.com.ty.lift.business.project.dao.entity.model.response.ProjectRelevanceResponse;
 import cn.com.ty.lift.business.project.dao.entity.model.response.ProjectUserResponse;
 import cn.com.ty.lift.business.project.dao.mapper.ProjectUserMapper;
 import cn.com.ty.lift.common.constants.CommonEnum;
@@ -128,4 +129,9 @@ public class ProjectUserService extends ServiceImpl<ProjectUserMapper, ProjectUs
         });
         return baseMapper.batchRemoveWithParams(request);
     }
+
+    public RestResponse relevanceProject(ProjectRequest request) {
+        List<ProjectRelevanceResponse> relevanceResponseList = baseMapper.findProjectListByUserId(request);
+        return RestResponse.success(relevanceResponseList);
+    }
 }

+ 2 - 9
lift-business-service/src/main/resources/mapper/project/ProjectLiftRelevanceMapper.xml

@@ -25,25 +25,18 @@
 		update_id, update_date
 	</sql>
 
-	<select id="selectListByUserId" resultType="cn.com.ty.lift.business.project.dao.entity.model.response.ProjectRelevanceResponse"
+	<select id="selectListByUserIdAndProjectId" resultType="cn.com.ty.lift.business.project.dao.entity.model.response.ProjectRelevanceResponse"
 			parameterType="cn.com.ty.lift.business.project.dao.entity.model.request.ProjectRequest" >
 		SELECT
 		   plr.id              AS id,
 		   plr.worker_id       AS workerId,
-		   p.id                AS projectId,
-		   p.project_code      AS projectCode,
-  		   p.project_name      AS projectName,
-		   pclr.id             AS relevanceId,
 		   l.id                AS liftId,
            l.lift_code         AS liftCode,
            l.registration_code AS registrationCode,
            l.device_position   AS devicePosition
 		FROM project_lift_relevance plr
-		  LEFT JOIN project p ON plr.project_id = p.id
 		  LEFT JOIN lift l ON plr.lift_id = l.id
-		  LEFT JOIN platform_company_lift_relevance pclr
-					ON l.id = pclr.lift_id AND plr.mt_company_id = pclr.mt_company_id
-		WHERE plr.mt_company_id = #{request.mtCompanyId,jdbcType=BIGINT}
+		WHERE plr.project_id = #{request.projectId,jdbcType=BIGINT}
 		   AND plr.worker_id = #{request.workerId,jdbcType=BIGINT}
 	</select>
 

+ 20 - 0
lift-business-service/src/main/resources/mapper/project/ProjectUserMapper.xml

@@ -63,4 +63,24 @@
 			</foreach>
 	</delete>
 
+	<!-- 获取用户关联的项目 -->
+	<select id="findProjectListByUserId"
+			parameterType="cn.com.ty.lift.business.project.dao.entity.model.request.ProjectRequest"
+			resultType="cn.com.ty.lift.business.project.dao.entity.model.response.ProjectRelevanceResponse">
+		select
+			pu.project_id as projectId,
+			p.project_name as projectName,
+			p.project_code as projectCode
+		from
+			project_user pu
+		left join
+			project p
+		on
+			pu.project_id = p.id
+		where
+			pu.mt_company_id = #{mtCompanyId}
+		and
+			pu.user_id = #{workerId}
+	</select>
+
 </mapper>

+ 0 - 20
lift-system-service/src/main/java/cn/com/ty/lift/system/homepage/service/LiftDataService.java

@@ -235,26 +235,6 @@ public class LiftDataService {
         return liftIdToMaintenancePlanStatus;
     }
 
-    /**
-     * @param
-     * @return
-     * @description 获取电梯id->电梯维保记录状态
-     * @date 2020/2/18 2:05 下午
-     */
-    private Map<Long, String> getLiftIdToMaintenanceRecordStatus(List<MtRecordDataModel> mtRecordDataModels) {
-        if (mtRecordDataModels != null && mtRecordDataModels.size() > 0) {
-            mtRecordDataModels = mtRecordDataModels.stream().filter(mtRecordDataModel ->
-                    mtRecordDataModel.getLiftId() != null &&
-                            mtRecordDataModel.getStatus() != null)
-                    .collect(Collectors.toList());
-            return mtRecordDataModels.stream()
-                    .collect(Collectors.toMap(
-                            MtRecordDataModel::getLiftId, MtRecordDataModel::getStatus
-                    ));
-        }
-        return new HashMap<>();
-    }
-
     /**
      * @param
      * @return