|
@@ -46,6 +46,7 @@ import java.util.stream.Collectors;
|
|
|
* @description 平台企业电梯关联业务层
|
|
|
*/
|
|
|
@Service
|
|
|
+@SuppressWarnings("all")
|
|
|
public class PlatformCompanyLiftRelevanceService extends ServiceImpl<PlatformCompanyLiftRelevanceMapper, PlatformCompanyLiftRelevance> {
|
|
|
|
|
|
@Resource
|
|
@@ -296,25 +297,8 @@ public class PlatformCompanyLiftRelevanceService extends ServiceImpl<PlatformCom
|
|
|
if (Objects.isNull(regionDirectorId) || regionDirectorId == 0) {
|
|
|
throw new RuntimeException("项目ID查询区域主管ID失败!");
|
|
|
}
|
|
|
- //判断project_user 是否有这个人
|
|
|
- ProjectUser projectUser = projectUserService.getBaseMapper().selectOne(new QueryWrapper<ProjectUser>()
|
|
|
- .lambda()
|
|
|
- .eq(ProjectUser::getMtCompanyId, mtCompanyId)
|
|
|
- .eq(ProjectUser::getProjectId, projectId)
|
|
|
- .eq(ProjectUser::getUserId, regionDirectorId));
|
|
|
-
|
|
|
- if (Objects.isNull(projectUser)) {
|
|
|
- projectUser.setProjectId(projectId);
|
|
|
- projectUser.setIsMonitor("0");
|
|
|
- projectUser.setMtCompanyId(mtCompanyId);
|
|
|
- projectUser.setUserId(regionDirectorId);
|
|
|
- projectUser.setCreateDate(LocalDateTime.now());
|
|
|
- projectUser.setUserRole("REGION_DIRECTOR");
|
|
|
-
|
|
|
- if (projectUserService.getBaseMapper().insert(projectUser) != 1) {
|
|
|
- throw new RuntimeException("保存区域主管失败!");
|
|
|
- }
|
|
|
- }
|
|
|
+ //维护project_user表数据
|
|
|
+ maintain(projectId, mtCompanyId, regionDirectorId, projectUserService);
|
|
|
|
|
|
if (!ret) {
|
|
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
@@ -357,6 +341,15 @@ public class PlatformCompanyLiftRelevanceService extends ServiceImpl<PlatformCom
|
|
|
break;
|
|
|
//继续服务
|
|
|
case 3:
|
|
|
+
|
|
|
+ //查询项目的默认区域主管 老项目恢复需要默认关联区域主管(project_user)
|
|
|
+ Long regionDirectorId = baseMapper.getRegionDirectorByProjectId(projectId);
|
|
|
+ if (Objects.isNull(regionDirectorId) || regionDirectorId == 0) {
|
|
|
+ throw new RuntimeException("项目ID查询区域主管ID失败!");
|
|
|
+ }
|
|
|
+ //维护project_user表数据
|
|
|
+ maintain(projectId, mtCompanyId, regionDirectorId, projectUserService);
|
|
|
+
|
|
|
project.setEndDate(request.getEndDate());
|
|
|
project.setProjectStatus(CommonEnum.ProjectStatus.IN_SERVICE.getCode());
|
|
|
boolean ret = projectService.updateById(project);
|
|
@@ -470,4 +463,103 @@ public class PlatformCompanyLiftRelevanceService extends ServiceImpl<PlatformCom
|
|
|
lambdaQueryWrapper.last("LIMIT 1");
|
|
|
return getOne(lambdaQueryWrapper);
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 维系ProjectUser表中区域主管信息
|
|
|
+ *
|
|
|
+ * @param projectId 项目ID
|
|
|
+ * @param mtCompanyId 维保公司ID
|
|
|
+ * @param userId 区域主管ID
|
|
|
+ * @param projectUserService 数据表服务类
|
|
|
+ */
|
|
|
+ private void maintain(Long projectId, Long mtCompanyId, Long userId, ProjectUserService projectUserService) {
|
|
|
+
|
|
|
+ //三个long 类型对应数据唯一性校验忽略,仅校验空值
|
|
|
+ if (Objects.isNull(projectId) || Objects.isNull(mtCompanyId) || Objects.isNull(userId)
|
|
|
+ || projectId == 0 || mtCompanyId == 0 || userId == 0) {
|
|
|
+ rollbackByException("传入数据异常!");
|
|
|
+ }
|
|
|
+ List<ProjectUser> projectUsers = projectUserService.getBaseMapper().selectList(
|
|
|
+ new QueryWrapper<ProjectUser>()
|
|
|
+ .lambda()
|
|
|
+ .eq(ProjectUser::getMtCompanyId, mtCompanyId)
|
|
|
+ .eq(ProjectUser::getProjectId, projectId)
|
|
|
+ .eq(ProjectUser::getUserRole, "REGION_DIRECTOR"));
|
|
|
+
|
|
|
+ switch (projectUsers.size()) {
|
|
|
+ case 0:
|
|
|
+ //写入数据
|
|
|
+ if (projectUserService.getBaseMapper().insert(createProjectUser(projectId, mtCompanyId, userId)) != 1) {
|
|
|
+ rollbackByException("写入project_user数据失败!");
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ //修改数据
|
|
|
+ ProjectUser updateProjectUser = projectUsers.get(0);
|
|
|
+
|
|
|
+ //判断传入项目主管ID是否和project_user对应的主管ID是否一致
|
|
|
+ if (Objects.equals(userId, updateProjectUser.getUserId())) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ updateProjectUser.setUpdateDate(LocalDateTime.now());
|
|
|
+ updateProjectUser.setUserId(userId);
|
|
|
+
|
|
|
+ int i = projectUserService.getBaseMapper().update(updateProjectUser, new QueryWrapper<ProjectUser>()
|
|
|
+ .lambda()
|
|
|
+ .eq(ProjectUser::getProjectId, updateProjectUser.getProjectId())
|
|
|
+ .eq(ProjectUser::getMtCompanyId, mtCompanyId)
|
|
|
+ .eq(ProjectUser::getUserRole, "REGION_DIRECTOR"));
|
|
|
+ if (1 != i) {
|
|
|
+ rollbackByException("project_user表修改数据失败!");
|
|
|
+ }
|
|
|
+
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ //查出多个区域主管角色,删除数据
|
|
|
+ int delCount = projectUserService.getBaseMapper().delete(new QueryWrapper<ProjectUser>()
|
|
|
+ .lambda()
|
|
|
+ .eq(ProjectUser::getProjectId, projectId)
|
|
|
+ .eq(ProjectUser::getMtCompanyId, mtCompanyId)
|
|
|
+ .eq(ProjectUser::getUserRole, "REGION_DIRECTOR"));
|
|
|
+
|
|
|
+ //重新写入
|
|
|
+ int insert = projectUserService.getBaseMapper().insert(createProjectUser(projectId, mtCompanyId, userId));
|
|
|
+
|
|
|
+ if (delCount != projectUsers.size() || 1 != insert) {
|
|
|
+ rollbackByException("project_user表修改数据失败!");
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 构建ProjectUser
|
|
|
+ *
|
|
|
+ * @param projectId
|
|
|
+ * @param mtCompanyId
|
|
|
+ * @param userId
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private ProjectUser createProjectUser(Long projectId, Long mtCompanyId, Long userId) {
|
|
|
+ ProjectUser projectUser = new ProjectUser();
|
|
|
+ projectUser.setUserId(userId);
|
|
|
+ projectUser.setProjectId(projectId);
|
|
|
+ projectUser.setMtCompanyId(mtCompanyId);
|
|
|
+ projectUser.setUserRole("REGION_DIRECTOR");
|
|
|
+ projectUser.setCreateDate(LocalDateTime.now());
|
|
|
+ return projectUser;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 自定义数据回滚异常
|
|
|
+ *
|
|
|
+ * @param msg
|
|
|
+ */
|
|
|
+ private void rollbackByException(String msg) {
|
|
|
+ throw new RuntimeException(msg);
|
|
|
+ }
|
|
|
}
|