|
@@ -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);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|