lixing 4 vuotta sitten
vanhempi
commit
c4f80a57eb

+ 45 - 31
fm-person/src/main/java/com/persagy/fm/person/controller/PersonController.java

@@ -1,24 +1,29 @@
 package com.persagy.fm.person.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.persagy.fm.common.model.vo.DuplicateVO;
+import com.persagy.fm.common.response.CommonResult;
+import com.persagy.fm.common.response.FmResponseUpsertVO;
+import com.persagy.fm.common.response.PageList;
 import com.persagy.fm.common.utils.ResultHelper;
-import com.persagy.fm.person.model.vo.LatestJobNumberVO;
-import com.persagy.fm.person.model.vo.SimplePersonListItemVO;
-import com.persagy.fm.person.service.IPersonProjectService;
-import com.persagy.fm.person.service.IPersonService;
-
 import com.persagy.fm.person.model.ConvertPersonTool;
 import com.persagy.fm.person.model.Person;
+import com.persagy.fm.person.model.dto.*;
+import com.persagy.fm.person.model.vo.LatestJobNumberVO;
 import com.persagy.fm.person.model.vo.ResponsePersonItemVO;
 import com.persagy.fm.person.model.vo.ResponsePersonListItemVO;
-import com.persagy.fm.person.model.dto.*;
+import com.persagy.fm.person.model.vo.SimplePersonListItemVO;
+import com.persagy.fm.person.service.IPersonProjectService;
+import com.persagy.fm.person.service.IPersonService;
 import com.persagy.fm.saas.project.model.vo.ProjectTreeItemVO;
-import org.springframework.beans.factory.annotation.Autowired;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import com.persagy.fm.common.response.*;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
 import java.util.List;
@@ -155,28 +160,37 @@ public class PersonController {
         return ResultHelper.single(latestJobNumberVO);
     }
 
-    @ApiOperation(value = "校验身份证号重复")
-    @PostMapping("/checkDuplicateIdCardNumber")
-    public CommonResult checkDuplicateIdCardNumber(
-            @Valid @RequestBody CheckDuplicateIdCardNumberDTO checkDuplicateIdCardNumberDTO) {
-        personService.checkIdNumber(checkDuplicateIdCardNumberDTO.getIdNumber());
-        return ResultHelper.success();
-    }
-
-    @ApiOperation(value = "校验手机号重复")
-    @PostMapping("/checkDuplicatePhoneNumber")
-    public CommonResult checkDuplicatePhoneNumber(
-            @Valid @RequestBody CheckDuplicatePhoneNumberDTO checkDuplicatePhoneNumberDTO) {
-        personService.checkPhoneNum(checkDuplicatePhoneNumberDTO.getPhoneNumber());
-        return ResultHelper.success();
-    }
-
-    @ApiOperation(value = "校验账号重复")
-    @PostMapping("/checkDuplicateUserName")
-    public CommonResult checkDuplicateUserName(
-            @Valid @RequestBody CheckDuplicateUserNameDTO checkDuplicateUserNameDTO) {
-        personService.checkUserName(checkDuplicateUserNameDTO.getUsername());
-        return ResultHelper.success();
+    @ApiOperation(value = "校验人员属性重复")
+    @PostMapping("/checkDuplicate")
+    public CommonResult<DuplicateVO> checkDuplicate(@RequestBody CheckDuplicateDTO checkDuplicateDTO) {
+        DuplicateVO duplicateVO = new DuplicateVO();
+        duplicateVO.setDuplicate(false);
+        // 校验身份证号
+        if (personService.checkDuplicateIdNumber(checkDuplicateDTO.getIdNumber())) {
+            duplicateVO.setDuplicate(true);
+            return ResultHelper.single(duplicateVO, "身份证号重复");
+        }
+        // 校验账号
+        if (personService.checkDuplicateUserName(checkDuplicateDTO.getUsername())) {
+            duplicateVO.setDuplicate(true);
+            return ResultHelper.single(duplicateVO, "账号已被使用");
+        }
+        // 校验手机号
+        if (personService.checkDuplicatePhoneNum(checkDuplicateDTO.getPhoneNumber())) {
+            duplicateVO.setDuplicate(true);
+            return ResultHelper.single(duplicateVO, "手机号已被使用");
+        }
+        // 校验工号
+        if (personService.checkDuplicateJobNumber(checkDuplicateDTO.getJobNumber())) {
+            duplicateVO.setDuplicate(true);
+            return ResultHelper.single(duplicateVO, "工号已被使用");
+        }
+        // 校验邮箱
+        if (personService.checkDuplicateMail(checkDuplicateDTO.getMail())) {
+            duplicateVO.setDuplicate(true);
+            return ResultHelper.single(duplicateVO, "邮箱已被使用");
+        }
+        return ResultHelper.single(duplicateVO);
     }
 }
 

+ 6 - 2
fm-person/src/main/java/com/persagy/fm/person/model/dto/CheckDuplicatePhoneNumberDTO.java

@@ -8,7 +8,11 @@ import lombok.Data;
  * @version V1.0 2021-03-15 17:20:32
  */
 @Data
-@ApiModel(value = "校验手机号重复入参")
-public class CheckDuplicatePhoneNumberDTO {
+@ApiModel(value = "校验属性重复入参")
+public class CheckDuplicateDTO {
+    private String idNumber;
     private String phoneNumber;
+    private String username;
+    private String mail;
+    private String jobNumber;
 }

+ 0 - 15
fm-person/src/main/java/com/persagy/fm/person/model/dto/CheckDuplicateIdCardNumberDTO.java

@@ -1,15 +0,0 @@
-package com.persagy.fm.person.model.dto;
-
-import io.swagger.annotations.ApiModel;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * @author lixing
- * @version V1.0 2021-03-15 17:20:32
- */
-@Data
-@ApiModel(value = "校验身份证号重复入参")
-public class CheckDuplicateIdCardNumberDTO{
-    private String idNumber;
-}

+ 0 - 14
fm-person/src/main/java/com/persagy/fm/person/model/dto/CheckDuplicateUserNameDTO.java

@@ -1,14 +0,0 @@
-package com.persagy.fm.person.model.dto;
-
-import io.swagger.annotations.ApiModel;
-import lombok.Data;
-
-/**
- * @author lixing
- * @version V1.0 2021-03-15 17:20:32
- */
-@Data
-@ApiModel(value = "校验账号重复入参")
-public class CheckDuplicateUserNameDTO {
-    private String username;
-}

+ 29 - 3
fm-person/src/main/java/com/persagy/fm/person/service/IPersonService.java

@@ -199,24 +199,50 @@ public interface IPersonService {
     /**
      * 校验重复的手机号
      *
+     * @param phoneNumber 手机号
+     * @return 是否重复
      * @author lixing
      * @version V1.0 2021/4/7 11:39 上午
      */
-    void checkPhoneNum(String phoneNumber);
+    Boolean checkDuplicatePhoneNum(String phoneNumber);
 
     /**
      * 校验重复的身份证号
      *
+     * @param idNumber 身份证号
+     * @return 是否重复
      * @author lixing
      * @version V1.0 2021/4/7 11:40 上午
      */
-    void checkIdNumber(String idNumber);
+    Boolean checkDuplicateIdNumber(String idNumber);
 
     /**
      * 校验重复的登录名
      *
+     * @param username 登录名
+     * @return 是否重复
      * @author lixing
      * @version V1.0 2021/4/7 11:41 上午
      */
-    void checkUserName(String username);
+    Boolean checkDuplicateUserName(String username);
+
+    /**
+     * 校验重复的工号
+     *
+     * @param jobNumber 工号
+     * @return 是否重复
+     * @author lixing
+     * @version V1.0 2021/4/7 11:41 上午
+     */
+    Boolean checkDuplicateJobNumber(String jobNumber);
+
+    /**
+     * 校验重复的邮箱
+     *
+     * @param mail 邮箱
+     * @return 是否重复
+     * @author lixing
+     * @version V1.0 2021/4/7 11:41 上午
+     */
+    Boolean checkDuplicateMail(String mail);
 }

+ 162 - 27
fm-person/src/main/java/com/persagy/fm/person/service/impl/PersonServiceImpl.java

@@ -11,7 +11,6 @@ import com.persagy.fm.common.model.vo.SimpleObjVO;
 import com.persagy.fm.common.utils.ListUtil;
 import com.persagy.fm.department.model.vo.DepSimpleObjVO;
 import com.persagy.fm.department.service.IDepartmentService;
-import com.persagy.fm.depproject.model.DepProject;
 import com.persagy.fm.person.constant.enums.CertificateTypeEnum;
 import com.persagy.fm.person.constant.enums.PersonTypeEnum;
 import com.persagy.fm.person.dao.PersonMapper;
@@ -26,9 +25,11 @@ import com.persagy.fm.profession.service.IProfessionService;
 import com.persagy.fm.saas.account.model.dto.*;
 import com.persagy.fm.saas.account.model.vo.SaasAccountListItemVO;
 import com.persagy.fm.saas.account.service.ISaasAccountService;
+import com.persagy.fm.saas.accountproject.model.SaasAccountProject;
 import com.persagy.fm.saas.accountproject.model.dto.AddSaasAccountProjectDTO;
 import com.persagy.fm.saas.accountproject.service.ISaasAccountProjectService;
 import com.persagy.fm.saas.accountrole.constant.enums.AccountRoleTypeEnum;
+import com.persagy.fm.saas.accountrole.model.SaasAccountRole;
 import com.persagy.fm.saas.accountrole.model.dto.AddSaasAccountRoleDTO;
 import com.persagy.fm.saas.accountrole.model.vo.AccountRoleVO;
 import com.persagy.fm.saas.accountrole.service.ISaasAccountRoleService;
@@ -225,43 +226,49 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
      * 检查账号有没有被使用
      *
      * @param username 账号
+     * @return 是否重复
      * @author lixing
      * @version V1.0 2021/3/23 3:15 下午
      */
     @Override
-    public void checkUserName(String username) {
+    public Boolean checkDuplicateUserName(String username) {
         List<Person> people = queryByUsername(username);
         if (!CollectionUtils.isEmpty(people)) {
-            throw new IllegalArgumentException("账号重复");
+            return true;
         }
 
         PageQuerySaasAccountDTO pageQuerySaasAccountDTO = new PageQuerySaasAccountDTO();
         pageQuerySaasAccountDTO.setUsername(username);
         List<SaasAccountListItemVO> accountListItemVoList = saasAccountService.querySaasAccountList(pageQuerySaasAccountDTO);
-        if (!CollectionUtils.isEmpty(accountListItemVoList)) {
-            throw new IllegalArgumentException("账号已被使用");
-        }
+        return !CollectionUtils.isEmpty(accountListItemVoList);
+    }
+
+    @Override
+    public Boolean checkDuplicateMail(String mail) {
+        PageQuerySaasAccountDTO pageQuerySaasAccountDTO = new PageQuerySaasAccountDTO();
+        pageQuerySaasAccountDTO.setMail(mail);
+        List<SaasAccountListItemVO> accountListItemVoList = saasAccountService.querySaasAccountList(pageQuerySaasAccountDTO);
+        return !CollectionUtils.isEmpty(accountListItemVoList);
     }
 
     /**
      * 检查手机号有没有被使用
      *
      * @param phoneNum 手机号
+     * @return 是否重复
      * @author lixing
      * @version V1.0 2021/3/23 3:15 下午
      */
     @Override
-    public void checkPhoneNum(String phoneNum) {
+    public Boolean checkDuplicatePhoneNum(String phoneNum) {
         PageQuerySaasAccountDTO pageQuerySaasAccountDTO = new PageQuerySaasAccountDTO();
         pageQuerySaasAccountDTO.setPhoneNum(phoneNum);
         List<SaasAccountListItemVO> accountListItemVoList = saasAccountService.querySaasAccountList(pageQuerySaasAccountDTO);
-        if (!CollectionUtils.isEmpty(accountListItemVoList)) {
-            throw new IllegalArgumentException("手机号已被使用");
-        }
+        return !CollectionUtils.isEmpty(accountListItemVoList);
     }
 
     /**
-     * 校验重复项,手机号码,身份证
+     * 校验重复项
      *
      * @param addPersonDTO 创建人员入参
      * @author lixing
@@ -269,28 +276,53 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
      */
     private void checkAddPersonDTO(AddPersonDTO addPersonDTO) {
         // 校验身份证号
-        checkIdNumber(addPersonDTO.getIdNumber());
-
+        if (checkDuplicateIdNumber(addPersonDTO.getIdNumber())) {
+            throw new IllegalArgumentException("身份证号重复");
+        }
         // 校验账号
-        checkUserName(addPersonDTO.getUsername());
-
+        if (checkDuplicateUserName(addPersonDTO.getUsername())) {
+            throw new IllegalArgumentException("账号已被使用");
+        }
         // 校验手机号
-        checkPhoneNum(addPersonDTO.getPhoneNum());
+        if (checkDuplicatePhoneNum(addPersonDTO.getPhoneNum())) {
+            throw new IllegalArgumentException("手机号已被使用");
+        }
+        // 校验工号
+        if (checkDuplicateJobNumber(addPersonDTO.getJobNumber())) {
+            throw new IllegalArgumentException("工号已被使用");
+        }
+        // 校验邮箱
+        if (checkDuplicateMail(addPersonDTO.getMail())) {
+            throw new IllegalArgumentException("邮箱已被使用");
+        }
     }
 
     /**
      * 校验身份证号重复
      *
      * @param idNumber 身份证号
+     * @return 是否重复
      * @author lixing
      * @version V1.0 2021/4/1 3:03 下午
      */
     @Override
-    public void checkIdNumber(String idNumber) {
+    public Boolean checkDuplicateIdNumber(String idNumber) {
         List<Person> people = queryByIdCard(idNumber);
-        if (!CollectionUtils.isEmpty(people)) {
-            throw new IllegalArgumentException("身份证号重复");
-        }
+        return !CollectionUtils.isEmpty(people);
+    }
+
+    /**
+     * 校验工号重复
+     *
+     * @param jobNumber 工号
+     * @return 是否重复
+     * @author lixing
+     * @version V1.0 2021/4/1 3:03 下午
+     */
+    @Override
+    public Boolean checkDuplicateJobNumber(String jobNumber) {
+        List<Person> people = queryByJobNumber(jobNumber);
+        return !CollectionUtils.isEmpty(people);
     }
 
     /**
@@ -331,6 +363,24 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
     }
 
     /**
+     * 根据工号查询人员
+     *
+     * @param jobNumber 工号
+     * @return 人员列表
+     * @author lixing
+     * @version V1.0 2021/4/1 3:00 下午
+     */
+    public List<Person> queryByJobNumber(String jobNumber) {
+        if (StringUtils.isBlank(jobNumber)) {
+            return null;
+        }
+        QueryWrapper<Person> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(Person.PROP_VALID, ValidEnum.TRUE.getType());
+        queryWrapper.eq(Person.PROP_JOB_NUMBER, jobNumber);
+        return list(queryWrapper);
+    }
+
+    /**
      * 如果某些字段没有赋值,使用默认的值
      *
      * @param person 人员实体
@@ -380,15 +430,103 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
         SaasAccountListItemVO account = saasAccountService.querySaasAccountDetail(person.getAccountId());
         if (accountInfoChanged(updatePersonDTO, account)) {
             UpdateSaasAccountDTO updateSaasAccountDTO = ConvertPersonTool.INSTANCE.
-                     convert2UpdateSaasAccountDTO(account, updatePersonDTO);
+                    convert2UpdateSaasAccountDTO(account, updatePersonDTO);
             saasAccountService.updateSaasAccount(updateSaasAccountDTO);
         }
 
+        // 更新账号和角色的关联
+        List<SaasAccountRole> saasAccountRoles = saasAccountRoleService.
+                querySaasAccountRoleListByAccountIdList(Lists.newArrayList(person.getAccountId()));
+        if (accountRoleChanged(saasAccountRoles, updatePersonDTO.getMainDuty(),
+                updatePersonDTO.getOtherDuties(), updatePersonDTO.getOtherRoles())) {
+            // TODO: 2021/4/7
+        }
+
+        // 更新账号和项目的关联
+        List<SaasAccountProject> saasAccountProjects = saasAccountProjectService.
+                querySaasAccountProjectListByAccountId(person.getAccountId());
+        if (accountProjectsChanged(saasAccountProjects, updatePersonDTO.getProjectIds())) {
+            // TODO: 2021/4/8
+        }
+
         // 更新工作信息
         List<String> depIdsAfterUpdate = updatePersonDTO.getDepIds();
         updatePersonWorkResumes(depIdsAfterUpdate, personId);
     }
+    
+    /**
+     * 判断账号关联的项目是否发生变化
+     *
+     * @param saasAccountProjects 账号之前关联的项目
+     * @param projectIds 更新后账号关联的项目
+     * @return 是否发生变化
+     * @author lixing
+     * @version V1.0 2021/4/8 9:40 上午
+     */
+    private Boolean accountProjectsChanged(List<SaasAccountProject> saasAccountProjects, List<String> projectIds) {
+        if (CollectionUtils.isEmpty(saasAccountProjects)) {
+            return !CollectionUtils.isEmpty(projectIds);
+        } else {
+            List<String> projectIdsBeforeUpdate = saasAccountProjects.stream().
+                    map(SaasAccountProject::getProjectId).collect(Collectors.toList());
+            return ListUtil.listChanged(projectIdsBeforeUpdate, projectIds);
+        }
+    }
+    
+    /**
+     * 判断账号关联的角色是否发生变化
+     *
+     * @param saasAccountRoles 账号之前关联的角色
+     * @param mainDuty 更新后,账号关联的主岗
+     * @param otherDuties 更新后,账号关联的副岗
+     * @param otherRoles 更新后,账号关联的附加角色
+     * @return 是否发生变化
+     * @author lixing
+     * @version V1.0 2021/4/8 9:37 上午
+     */
+    private Boolean accountRoleChanged(
+            List<SaasAccountRole> saasAccountRoles, String mainDuty,
+            List<String> otherDuties, List<String> otherRoles) {
+        // 校验主岗是否发生变化
+        List<SaasAccountRole> mainDuties = saasAccountRoles.stream().filter(
+                saasAccountRole -> AccountRoleTypeEnum.MAIN_DUTY.getType().equals(saasAccountRole.getCasType())
+        ).collect(Collectors.toList());
+
+        if (CollectionUtils.isEmpty(mainDuties)) {
+            if (mainDuty != null) {
+                return true;
+            }
+        } else {
+            SaasAccountRole saasAccountRole = mainDuties.get(0);
+            if (!saasAccountRole.getRoleId().equals(mainDuty)) {
+                return true;
+            }
+        }
+        // 校验副岗是否发生变化
+        List<String> otherDutiesBeforeUpdate = saasAccountRoles.stream().filter(
+                saasAccountRole -> AccountRoleTypeEnum.OTHER_DUTY.getType().equals(saasAccountRole.getCasType())
+        ).map(SaasAccountRole::getRoleId).collect(Collectors.toList());
+
+        if (ListUtil.listChanged(otherDutiesBeforeUpdate, otherDuties)) {
+            return true;
+        }
+        // 校验附加角色是否发生变化
+        List<String> otherRolesBeforeUpdate = saasAccountRoles.stream().filter(
+                saasAccountRole -> AccountRoleTypeEnum.SYS_ROLE.getType().equals(saasAccountRole.getCasType())
+        ).map(SaasAccountRole::getRoleId).collect(Collectors.toList());
+
+        return ListUtil.listChanged(otherRolesBeforeUpdate, otherRoles);
+    }
 
+    /**
+     * 判断账号基本信息是否发生变化
+     *
+     * @param updatePersonDTO 更新人员入参
+     * @param account 账号实例
+     * @return 是否发生变化
+     * @author lixing
+     * @version V1.0 2021/4/8 9:38 上午
+     */
     private boolean accountInfoChanged(UpdatePersonDTO updatePersonDTO, SaasAccountListItemVO account) {
         if (account != null) {
             // 账号名称
@@ -407,14 +545,11 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
                 return true;
             }
             // 邮箱
-            if (account.getMail() != null &&
-                    !account.getMail().equals(updatePersonDTO.getMail())) {
-                return true;
-            }
+            return account.getMail() != null &&
+                    !account.getMail().equals(updatePersonDTO.getMail());
         } else {
             throw new IllegalArgumentException("账号信息为空");
         }
-        return false;
     }
 
     /**
@@ -741,7 +876,7 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
         personQueryWrapper.eq(Person.PROP_VALID, ValidEnum.TRUE.getType());
         personQueryWrapper.orderByDesc(Person.PROP_CREATIONTIME);
 
-        IPage<Person> pageParam = new Page<>(1, 1,true);
+        IPage<Person> pageParam = new Page<>(1, 1, true);
         IPage<Person> results = getBaseMapper().selectPage(pageParam, personQueryWrapper);
         List<Person> records = results.getRecords();
         if (!CollectionUtils.isEmpty(records)) {

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/saas/account/model/dto/PageQuerySaasAccountDTO.java

@@ -17,5 +17,5 @@ public class PageQuerySaasAccountDTO extends SaasBasePageDTO {
     private String username;
     private String phoneNum;
     private String accountSource;
-
+    private String mail;
 }

+ 10 - 0
fm-person/src/main/java/com/persagy/fm/saas/accountproject/service/ISaasAccountProjectService.java

@@ -45,4 +45,14 @@ public interface ISaasAccountProjectService {
      * @version V1.0 2021-03-26 15:15:40
      */
     List<SaasAccountProject> querySaasAccountProjectList(QuerySaasAccountProjectDTO querySaasAccountProjectDTO);
+
+    /**
+     * 根据账号id,查询账号-集团项目关联信息
+     *
+     * @param accountId queryDTO
+     * @return List<SaasAccountProject>
+     * @author lixing
+     * @version V1.0 2021-03-26 15:15:40
+     */
+    List<SaasAccountProject> querySaasAccountProjectListByAccountId(String accountId);
 }

+ 14 - 3
fm-person/src/main/java/com/persagy/fm/saas/accountproject/service/impl/SaasAccountProjectServiceImpl.java

@@ -7,6 +7,7 @@ import com.persagy.fm.saas.accountproject.model.dto.AddSaasAccountProjectDTO;
 import com.persagy.fm.saas.accountproject.model.dto.DeleteSaasAccountProjectDTO;
 import com.persagy.fm.saas.accountproject.model.dto.QuerySaasAccountProjectDTO;
 import com.persagy.fm.saas.accountproject.service.ISaasAccountProjectService;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -25,7 +26,7 @@ public class SaasAccountProjectServiceImpl implements ISaasAccountProjectService
 
     @Override
     public String createSaasAccountProject(AddSaasAccountProjectDTO addSaasAccountProjectDTO) {
-        addSaasAccountProjectDTO.setDefaultValue();
+        addSaasAccountProjectDTO.setDefaultValueNoAccountId();
         FmResponseContent<String> saasAccountProject = saasAccountProjectClient.createSaasAccountProject(addSaasAccountProjectDTO);
         return saasAccountProject.getContent();
     }
@@ -33,15 +34,25 @@ public class SaasAccountProjectServiceImpl implements ISaasAccountProjectService
     @Override
     public void deleteSaasAccountProject(String accountId) {
         DeleteSaasAccountProjectDTO deleteSaasAccountProjectDTO = new DeleteSaasAccountProjectDTO();
-        deleteSaasAccountProjectDTO.setDefaultValue();
+        deleteSaasAccountProjectDTO.setDefaultValueNoAccountId();
         deleteSaasAccountProjectDTO.setAccountId(accountId);
         saasAccountProjectClient.deleteSaasAccountProject(deleteSaasAccountProjectDTO);
     }
 
     @Override
     public List<SaasAccountProject> querySaasAccountProjectList(QuerySaasAccountProjectDTO querySaasAccountProjectDTO) {
-        querySaasAccountProjectDTO.setDefaultValue();
+        querySaasAccountProjectDTO.setDefaultValueNoAccountId();
         FmResponseContent<List<SaasAccountProject>> responseContent = saasAccountProjectClient.querySaasAccountProjectList(querySaasAccountProjectDTO);
         return responseContent.getContent();
     }
+
+    @Override
+    public List<SaasAccountProject> querySaasAccountProjectListByAccountId(String accountId) {
+        if (StringUtils.isBlank(accountId)) {
+            return null;
+        }
+        QuerySaasAccountProjectDTO querySaasAccountProjectDTO = new QuerySaasAccountProjectDTO();
+        querySaasAccountProjectDTO.setAccountId(accountId);
+        return querySaasAccountProjectList(querySaasAccountProjectDTO);
+    }
 }