Browse Source

Merge branch 'feature-bieao' of lift-manager/lift-server into develop

bieao 5 years ago
parent
commit
6611531ef8

+ 0 - 26
lift-business-service/src/main/java/cn/com/ty/lift/business/project/dao/entity/model/request/ProjectConfirmRequest.java

@@ -1,26 +0,0 @@
-package cn.com.ty.lift.business.project.dao.entity.model.request;
-
-import lombok.Data;
-
-import javax.validation.constraints.NotNull;
-
-/**
- * @author bieao
- * @date 2020/1/11
- * @description 确认停止服务请求
- */
-@Data
-public class ProjectConfirmRequest {
-
-    /**
-     * 项目id
-     */
-    @NotNull(message = "notEmpty")
-    private Long projectId;
-
-    /**
-     * 维保公司id
-     */
-    @NotNull(message = "notEmpty")
-    private Long mtCompanyId;
-}

+ 36 - 3
lift-business-service/src/main/java/cn/com/ty/lift/business/project/service/ProjectUserService.java

@@ -8,10 +8,13 @@ import cn.com.ty.lift.common.constants.CommonEnum;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import javax.annotation.Resource;
 import java.util.Comparator;
 import java.util.List;
+import java.util.Optional;
 import java.util.stream.Collectors;
 
 /**
@@ -65,14 +68,44 @@ public class ProjectUserService extends ServiceImpl<ProjectUserMapper, ProjectUs
      * @description 修改项目组成员
      * @date 2020/1/11 10:43 上午
      */
+    @Transactional(rollbackFor = Exception.class)
     public boolean modify(ProjectUser projectUser){
         QueryWrapper<ProjectUser> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("user_id", projectUser.getUserId());
         queryWrapper.eq("project_id", projectUser.getProjectId());
         queryWrapper.eq("user_role", CommonEnum.DefaultRole.MTWORK.getCode());
-        ProjectUser user = getOne(queryWrapper);
-        projectUser.setIsMonitor("0".equals(user.getIsMonitor()) ? "1" : "0");
-        return update(projectUser, queryWrapper);
+        ProjectUser entry = getOne(queryWrapper);
+        //如果该成员是维保工,升级成维保班长,若该项目组成员还有其他维保班长,则该维保班长设置为维保工
+        if ("0".equals(entry.getIsMonitor())) {
+            //设置为维保班长
+            entry.setIsMonitor("1");
+            boolean result = update(entry, queryWrapper);
+            if (!result) return false;
+            QueryWrapper<ProjectUser> wrapper = new QueryWrapper<>();
+            wrapper.eq("mt_company_id", projectUser.getMtCompanyId());
+            wrapper.eq("project_id", projectUser.getProjectId());
+            wrapper.eq("user_role", CommonEnum.DefaultRole.MTWORK.getCode());
+            List<ProjectUser> userList = list(wrapper);
+            Optional<ProjectUser> first = userList.stream().filter(user ->
+                    !user.getUserId().equals(entry.getUserId()) && user.getIsMonitor().equals("1")).findFirst();
+            if (first.isPresent()) {
+                ProjectUser user = first.get();
+                //设置另外的维保班长为维保工
+                user.setIsMonitor("0");
+                boolean ret = update(user, new QueryWrapper<ProjectUser>() {{
+                    eq("user_id", user.getUserId());
+                    eq("project_id", user.getProjectId());
+                    eq("user_role", CommonEnum.DefaultRole.MTWORK.getCode());
+                }});
+                if (ret) return true;
+                else TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            }
+            return true;
+        } else {
+            //设置为维保工
+            entry.setIsMonitor("0");
+            return update(entry, queryWrapper);
+        }
     }
 
     /**

+ 1 - 0
lift-business-service/src/main/resources/mapper/maintenance/MaintenancePlanMapper.xml

@@ -60,6 +60,7 @@
 		LEFT JOIN user_info ui ON plr.worker_id = ui.user_id
 		LEFT JOIN region r ON p.region_id = r.id
 		WHERE plr.mt_company_id = #{request.mtCompanyId,jdbcType=VARCHAR}
+		AND pclr.lift_company_status != '1'
 		<if test="request.projectId!=null and request.projectId!=''">
 			AND p.id = #{request.projectId,jdbcType=BIGINT}
 		</if>