lixing vor 4 Jahren
Ursprung
Commit
d8919c90a3

+ 36 - 0
fm-person/src/main/java/com/persagy/fm/person/model/ConvertPersonTool.java

@@ -7,6 +7,9 @@ import com.persagy.fm.person.model.dto.UpdatePersonDTO;
 import com.persagy.fm.person.model.vo.ResponsePersonItemVO;
 import com.persagy.fm.person.model.vo.ResponsePersonListItemVO;
 import com.persagy.fm.person.model.vo.SimplePersonListItemVO;
+import com.persagy.fm.saas.account.model.dto.AddSaasAccountDTO;
+import com.persagy.fm.saas.account.model.dto.UpdateSaasAccountDTO;
+import com.persagy.fm.saas.account.model.vo.SaasAccountListItemVO;
 import com.persagy.fm.workresume.model.dto.PageQueryWorkResumeDTO;
 import org.mapstruct.*;
 import org.mapstruct.factory.Mappers;
@@ -122,5 +125,38 @@ public interface ConvertPersonTool {
      * @version V1.0 2021/3/22 8:01 下午
      */
     SimplePersonListItemVO convert2SimpleListItem(Person person);
+
+    /**
+     * addPersonDTO转换为addSaasAccountDTO
+     *
+     * @param addPersonDTO 添加人员的入参
+     * @return 创建账号的入参
+     * @author lixing
+     * @version V1.0 2021/4/6 3:06 下午
+     */
+    @Mapping(source = "expireDate", target = "validEndTime")
+    AddSaasAccountDTO convert2AddSaasAccountDTO(AddPersonDTO addPersonDTO);
+
+    /**
+     * 账号信息和更新人员入参转换为更新账号入参
+     *
+     * @param account 账号信息
+     * @param updatePersonDTO 更新人员入参
+     * @return 更新账号入参
+     * @author lixing
+     * @version V1.0 2021/4/6 4:55 下午
+     */
+    @Mappings({
+            @Mapping(target = "accountType", source = "account.accountType"),
+            @Mapping(target = "accountSource", source = "account.accountSource"),
+            @Mapping(target = "headPortrait", source = "account.headPortrait"),
+            @Mapping(target = "validStartTime", source = "account.validStartTime"),
+            @Mapping(target = "remark", source = "account.remark"),
+            @Mapping(target = "username", source = "updatePersonDTO.username"),
+            @Mapping(target = "phoneNum", source = "updatePersonDTO.phoneNum"),
+            @Mapping(target = "mail", source = "updatePersonDTO.mail"),
+            @Mapping(target = "validEndTime", source = "updatePersonDTO.expireDate"),
+    })
+    UpdateSaasAccountDTO convert2UpdateSaasAccountDTO(SaasAccountListItemVO account, UpdatePersonDTO updatePersonDTO);
 }
 

+ 94 - 46
fm-person/src/main/java/com/persagy/fm/person/service/impl/PersonServiceImpl.java

@@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.persagy.fm.common.constant.enums.ValidEnum;
 import com.persagy.fm.common.context.DefaultAppContext;
 import com.persagy.fm.common.model.vo.SimpleObjVO;
-import com.persagy.fm.common.response.FmResponseContent;
+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.person.constant.enums.CertificateTypeEnum;
@@ -21,13 +21,9 @@ import com.persagy.fm.person.model.vo.ResponsePersonItemVO;
 import com.persagy.fm.person.model.vo.ResponsePersonListItemVO;
 import com.persagy.fm.person.service.IPersonService;
 import com.persagy.fm.profession.service.IProfessionService;
-import com.persagy.fm.saas.account.client.SaasAccountClient;
-import com.persagy.fm.saas.account.constant.enums.AccountTypeEnum;
-import com.persagy.fm.saas.account.model.dto.AddSaasAccountDTO;
-import com.persagy.fm.saas.account.model.dto.DeleteSaasAccountDTO;
-import com.persagy.fm.saas.account.model.dto.EnableSaasAccountDTO;
-import com.persagy.fm.saas.account.model.dto.PageQuerySaasAccountDTO;
+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.dto.AddSaasAccountProjectDTO;
 import com.persagy.fm.saas.accountproject.service.ISaasAccountProjectService;
 import com.persagy.fm.saas.accountrole.constant.enums.AccountRoleTypeEnum;
@@ -47,7 +43,6 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import java.util.Arrays;
-import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -64,7 +59,7 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
     @Autowired
     private IWorkResumeService workResumeService;
     @Autowired
-    private SaasAccountClient saasAccountClient;
+    private ISaasAccountService saasAccountService;
     @Autowired
     private PersonMapper personMapper;
     @Autowired
@@ -110,7 +105,7 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
     /**
      * 账号关联项目
      *
-     * @param accountId 账号id
+     * @param accountId  账号id
      * @param projectIds 项目id列表
      * @author lixing
      * @version V1.0 2021/3/26 5:23 下午
@@ -129,10 +124,10 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
     /**
      * 账号关联角色
      *
-     * @param accountId 账号id
-     * @param mainDuty 主岗id
+     * @param accountId   账号id
+     * @param mainDuty    主岗id
      * @param otherDuties 副岗id列表
-     * @param otherRoles 其他角色列表
+     * @param otherRoles  其他角色列表
      * @author lixing
      * @version V1.0 2021/3/26 11:41 上午
      */
@@ -160,8 +155,8 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
     /**
      * 账号关联角色
      *
-     * @param accountId 账号id
-     * @param roleId 角色id
+     * @param accountId       账号id
+     * @param roleId          角色id
      * @param accountRoleType 关联类型
      * @author lixing
      * @version V1.0 2021/3/26 11:42 上午
@@ -220,16 +215,8 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
      * @version V1.0 2021/3/23 3:42 下午
      */
     private String createAccount(AddPersonDTO addPersonDTO) {
-        AddSaasAccountDTO addSaasAccountDTO = new AddSaasAccountDTO();
-        addSaasAccountDTO.setDefaultValue();
-        addSaasAccountDTO.setUsername(addPersonDTO.getUsername());
-        addSaasAccountDTO.setPhoneNum(addPersonDTO.getPhoneNum());
-        addSaasAccountDTO.setMail(addPersonDTO.getMail());
-        addSaasAccountDTO.setAccountType(AccountTypeEnum.COMMON.getType());
-        addSaasAccountDTO.setValidStartTime(new Date());
-        addSaasAccountDTO.setValidEndTime(addPersonDTO.getExpireDate());
-        FmResponseContent<String> saasAccount = saasAccountClient.createSaasAccount(addSaasAccountDTO);
-        return saasAccount.getContent();
+        AddSaasAccountDTO addSaasAccountDTO = ConvertPersonTool.INSTANCE.convert2AddSaasAccountDTO(addPersonDTO);
+        return saasAccountService.createSaasAccount(addSaasAccountDTO);
     }
 
     /**
@@ -246,10 +233,9 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
         }
 
         PageQuerySaasAccountDTO pageQuerySaasAccountDTO = new PageQuerySaasAccountDTO();
-        pageQuerySaasAccountDTO.setDefaultValue();
         pageQuerySaasAccountDTO.setUsername(username);
-        FmResponseContent<List<SaasAccountListItemVO>> listFmResponseContent = saasAccountClient.querySaasAccountPageList(pageQuerySaasAccountDTO);
-        if (listFmResponseContent.getCount() > 0) {
+        List<SaasAccountListItemVO> accountListItemVoList = saasAccountService.querySaasAccountList(pageQuerySaasAccountDTO);
+        if (!CollectionUtils.isEmpty(accountListItemVoList)) {
             throw new IllegalArgumentException("账号已被使用");
         }
     }
@@ -263,11 +249,9 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
      */
     private void checkPhoneNum(String phoneNum) {
         PageQuerySaasAccountDTO pageQuerySaasAccountDTO = new PageQuerySaasAccountDTO();
-        pageQuerySaasAccountDTO.setDefaultValue();
-        pageQuerySaasAccountDTO.setAccountId(null);
         pageQuerySaasAccountDTO.setPhoneNum(phoneNum);
-        FmResponseContent<List<SaasAccountListItemVO>> listFmResponseContent = saasAccountClient.querySaasAccountPageList(pageQuerySaasAccountDTO);
-        if (listFmResponseContent.getCount() > 0) {
+        List<SaasAccountListItemVO> accountListItemVoList = saasAccountService.querySaasAccountList(pageQuerySaasAccountDTO);
+        if (!CollectionUtils.isEmpty(accountListItemVoList)) {
             throw new IllegalArgumentException("手机号已被使用");
         }
     }
@@ -387,17 +371,68 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
         person = ConvertPersonTool.INSTANCE.convertUpdateDto2Entity(person, updatePersonDTO);
         person.setModifier(DefaultAppContext.getContext().getAccountId());
         updateById(person);
-        // TODO: 2021/4/1
-        // 判断是否有账号相关的更新
-        // 判断是否有工作信息相关的更新
-        List<String> depIds = updatePersonDTO.getDepIds();
+        // 账号基本信息发生改变,更新账号信息
+        SaasAccountListItemVO account = saasAccountService.querySaasAccountDetail(person.getAccountId());
+        if (accountInfoChanged(updatePersonDTO, account)) {
+            UpdateSaasAccountDTO updateSaasAccountDTO = ConvertPersonTool.INSTANCE.
+                     convert2UpdateSaasAccountDTO(account, updatePersonDTO);
+            saasAccountService.updateSaasAccount(updateSaasAccountDTO);
+        }
+
+        // 更新工作信息
+        List<String> depIdsAfterUpdate = updatePersonDTO.getDepIds();
+        updatePersonWorkResumes(depIdsAfterUpdate, personId);
+    }
+
+    private boolean accountInfoChanged(UpdatePersonDTO updatePersonDTO, SaasAccountListItemVO account) {
+        if (account != null) {
+            // 账号名称
+            if (account.getUsername() != null &&
+                    !account.getUsername().equals(updatePersonDTO.getUsername())) {
+                return true;
+            }
+            // 登录权限
+            if (account.getValidEndTime() != null &&
+                    !account.getValidEndTime().equals(updatePersonDTO.getExpireDate())) {
+                return true;
+            }
+            // 手机号码
+            if (account.getPhoneNum() != null &&
+                    !account.getPhoneNum().equals(updatePersonDTO.getPhoneNum())) {
+                return true;
+            }
+            // 邮箱
+            if (account.getMail() != null &&
+                    !account.getMail().equals(updatePersonDTO.getMail())) {
+                return true;
+            }
+        } else {
+            throw new IllegalArgumentException("账号信息为空");
+        }
+        return false;
+    }
+
+    /**
+     * 更新人员的工作信息
+     *
+     * @param depIdsAfterUpdate 人员更新后所在的部门
+     * @param personId          人员id
+     * @author lixing
+     * @version V1.0 2021/4/6 11:37 上午
+     */
+    private void updatePersonWorkResumes(List<String> depIdsAfterUpdate, String personId) {
         List<WorkResume> workResumes = workResumeService.queryWorkResumeListByPersonIdList(Lists.newArrayList(personId));
+        List<String> depIdsBeforeUpdate = workResumes.stream().map(WorkResume::getDepId).collect(Collectors.toList());
 
+        List<String> addedDepIds = ListUtil.getAddedList(depIdsAfterUpdate, depIdsBeforeUpdate);
+        List<String> deletedDepIds = ListUtil.getDeletedList(depIdsAfterUpdate, depIdsBeforeUpdate);
+
+        workResumeService.updatePersonWorkResume(personId, addedDepIds, deletedDepIds);
     }
 
     @Override
     public List<Person> queryByAccountId(String accountId) {
-        if(StringUtils.isBlank(accountId)) {
+        if (StringUtils.isBlank(accountId)) {
             throw new IllegalArgumentException("根据账号id查询人员,账号id为空");
         }
         QueryWrapper<Person> queryWrapper = new QueryWrapper<>();
@@ -523,10 +558,16 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
         // 禁用账号
         Person person = queryPersonProfile(personId);
         String accountId = person.getAccountId();
-        DeleteSaasAccountDTO deleteSaasAccountDTO = new DeleteSaasAccountDTO();
-        deleteSaasAccountDTO.setDefaultValue();
-        deleteSaasAccountDTO.setAccountId(accountId);
-        saasAccountClient.disableAccount(deleteSaasAccountDTO);
+
+        // 有可能账号已经被禁用。被禁用的账号再次被禁用会抛出异常。
+        SaasAccountListItemVO saasAccountListItemVO = saasAccountService.querySaasAccountDetail(accountId);
+        if (saasAccountListItemVO != null &&
+                ValidEnum.TRUE.getType().equals(saasAccountListItemVO.getValid())) {
+            DeleteSaasAccountDTO deleteSaasAccountDTO = new DeleteSaasAccountDTO();
+            deleteSaasAccountDTO.setAccountId(accountId);
+            saasAccountService.disableAccount(deleteSaasAccountDTO);
+        }
+
 
         // 工作信息状态更新为禁用
         workResumeService.changeWorkResumeEnableStateByPersonId(
@@ -566,10 +607,8 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
         Person person = queryPersonProfile(personId);
         String accountId = person.getAccountId();
         EnableSaasAccountDTO enableSaasAccountDTO = new EnableSaasAccountDTO();
-        enableSaasAccountDTO.setDefaultValue();
         enableSaasAccountDTO.setAccountId(accountId);
-        saasAccountClient.enableAccount(enableSaasAccountDTO);
-
+        saasAccountService.enableAccount(enableSaasAccountDTO);
         // 工作信息状态更新为启用
         workResumeService.changeWorkResumeEnableStateByPersonId(
                 personId, WorkResumeEnableStateEnum.ENABLE.getType());
@@ -584,6 +623,7 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
     public ResponsePersonItemVO queryPersonDetail(String id) {
         return queryPersonDetail(id, null);
     }
+
     @Override
     public ResponsePersonItemVO queryPersonDetail(String id, String depId) {
         Person person = queryPersonProfile(id);
@@ -634,7 +674,7 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
                 responsePersonItemVO.setEnableState(currentWorkResume.getEnableState());
             }
         }
-        
+
         return responsePersonItemVO;
     }
 
@@ -647,7 +687,7 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
      * @version V1.0 2021/4/1 6:00 下午
      */
     private List<DepSimpleObjVO> getDepSimpleObjVoList(List<WorkResume> workResumes) {
-        if (CollectionUtils.isEmpty(workResumes)){
+        if (CollectionUtils.isEmpty(workResumes)) {
             return Lists.newArrayList();
         }
         List<String> depIds = workResumes.stream().map(WorkResume::getDepId).collect(Collectors.toList());
@@ -670,6 +710,14 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
         return new SimpleObjVO(leaderId, person.getName());
     }
 
+    /**
+     * 根据证件类型id,获取证件类型信息
+     *
+     * @param certificateType 证件类型id
+     * @return 证件类型信息
+     * @author lixing
+     * @version V1.0 2021/4/6 11:38 上午
+     */
     private SimpleObjVO getCertificateTypeVO(String certificateType) {
         SimpleObjVO certificateTypeVO = new SimpleObjVO();
         certificateTypeVO.setId(certificateType);

+ 1 - 1
fm-person/src/main/java/com/persagy/fm/saas/account/client/SaasAccountClient.java

@@ -52,7 +52,7 @@ public interface SaasAccountClient {
      * @return FmResponseMsg
      * @version V1.0 2021/3/23 11:57 上午
      */
-    @PostMapping("/account/createSaasAccount")
+    @PostMapping("/account/updateSaasAccount")
     FmResponseMsg updateSaasAccount(@RequestBody UpdateSaasAccountDTO updateSaasAccountDTO);
 
     /**

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

@@ -3,6 +3,7 @@ package com.persagy.fm.saas.account.model.dto;
 import com.persagy.fm.saas.common.model.dto.SaasBaseDTO;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.apache.commons.lang3.StringUtils;
 
 import java.util.Date;
 
@@ -15,5 +16,4 @@ import java.util.Date;
 @EqualsAndHashCode(callSuper = true)
 @Data
 public class DeleteSaasAccountDTO extends SaasBaseDTO {
-    private String accountId;
 }

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

@@ -3,6 +3,7 @@ package com.persagy.fm.saas.account.model.dto;
 import com.persagy.fm.saas.common.model.dto.SaasBaseDTO;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.apache.commons.lang3.StringUtils;
 
 /**
  * 创建运维平台账号入参
@@ -13,5 +14,4 @@ import lombok.EqualsAndHashCode;
 @EqualsAndHashCode(callSuper = true)
 @Data
 public class EnableSaasAccountDTO extends SaasBaseDTO {
-    private String accountId;
 }

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

@@ -1,6 +1,5 @@
 package com.persagy.fm.saas.account.model.dto;
 
-import com.persagy.fm.common.model.dto.PageDTO;
 import com.persagy.fm.saas.common.model.dto.SaasBasePageDTO;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -14,9 +13,9 @@ import lombok.EqualsAndHashCode;
 @EqualsAndHashCode(callSuper = true)
 @Data
 public class PageQuerySaasAccountDTO extends SaasBasePageDTO {
-    private String accountId;
     private String accountType;
     private String username;
     private String phoneNum;
     private String accountSource;
+
 }

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

@@ -3,6 +3,7 @@ package com.persagy.fm.saas.account.model.dto;
 import com.persagy.fm.saas.common.model.dto.SaasBaseDTO;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.apache.commons.lang3.StringUtils;
 
 import java.util.Date;
 
@@ -15,7 +16,6 @@ import java.util.Date;
 @EqualsAndHashCode(callSuper = true)
 @Data
 public class UpdateSaasAccountDTO extends SaasBaseDTO {
-    private String accountId;
     private String accountType;
     private String username;
     private String password;
@@ -26,4 +26,5 @@ public class UpdateSaasAccountDTO extends SaasBaseDTO {
     private Date validStartTime;
     private Date validEndTime;
     private String remark;
+
 }

+ 1 - 0
fm-person/src/main/java/com/persagy/fm/saas/account/model/vo/SaasAccountListItemVO.java

@@ -26,4 +26,5 @@ public class SaasAccountListItemVO {
     private Date updateTime;
     private Date validStartTime;
     private String username;
+    private Integer valid;
 }

+ 71 - 0
fm-person/src/main/java/com/persagy/fm/saas/account/service/ISaasAccountService.java

@@ -0,0 +1,71 @@
+package com.persagy.fm.saas.account.service;
+
+import com.persagy.fm.saas.account.model.dto.*;
+import com.persagy.fm.saas.account.model.vo.SaasAccountListItemVO;
+
+import java.util.List;
+
+/**
+ * 运维中心账号接口
+ *
+ * @author lixing
+ * @version V1.0 2021/4/6 2:32 下午
+ **/
+public interface ISaasAccountService {
+    /**
+     * 创建账号
+     *
+     * @param addSaasAccountDTO 创建账号入参
+     * @return 账号id
+     * @author lixing
+     * @version V1.0 2021/4/6 2:53 下午
+     */
+    String createSaasAccount(AddSaasAccountDTO addSaasAccountDTO);
+
+    /**
+     * 查询账号列表
+     *
+     * @param pageQuerySaasAccountDTO 查询账号入参
+     * @return 账号列表
+     * @author lixing
+     * @version V1.0 2021/4/6 2:56 下午
+     */
+    List<SaasAccountListItemVO> querySaasAccountList(PageQuerySaasAccountDTO pageQuerySaasAccountDTO);
+
+    /**
+     * 查询账号详情
+     *
+     * @param accountId 账号id
+     * @return 账号详情
+     * @author lixing
+     * @version V1.0 2021/4/6 4:43 下午
+     */
+    SaasAccountListItemVO querySaasAccountDetail(String accountId);
+
+    /**
+     * 禁用账号
+     *
+     * @param deleteSaasAccountDTO 禁用账号入参
+     * @author lixing
+     * @version V1.0 2021/4/6 2:57 下午
+     */
+    void disableAccount(DeleteSaasAccountDTO deleteSaasAccountDTO);
+
+    /**
+     * 启用账号
+     *
+     * @param enableSaasAccountDTO 启用账号入参
+     * @author lixing
+     * @version V1.0 2021/4/6 2:57 下午
+     */
+    void enableAccount(EnableSaasAccountDTO enableSaasAccountDTO);
+
+    /**
+     * 更新账号信息
+     *
+     * @param updateSaasAccountDTO 更新账号入参
+     * @author lixing
+     * @version V1.0 2021/4/6 4:34 下午
+     */
+    void updateSaasAccount(UpdateSaasAccountDTO updateSaasAccountDTO);
+}

+ 74 - 0
fm-person/src/main/java/com/persagy/fm/saas/account/service/impl/SaasAccountServiceImpl.java

@@ -0,0 +1,74 @@
+package com.persagy.fm.saas.account.service.impl;
+
+import com.persagy.fm.common.response.FmResponseContent;
+import com.persagy.fm.saas.account.client.SaasAccountClient;
+import com.persagy.fm.saas.account.constant.enums.AccountTypeEnum;
+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 org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 运维中心账号service层
+ *
+ * @author lixing
+ * @version V1.0 2021/4/6 2:33 下午
+ **/
+@Service
+public class SaasAccountServiceImpl implements ISaasAccountService {
+    @Autowired
+    SaasAccountClient saasAccountClient;
+
+    @Override
+    public String createSaasAccount(AddSaasAccountDTO addSaasAccountDTO) {
+        addSaasAccountDTO.setDefaultValueNoAccountId();
+        addSaasAccountDTO.setAccountType(AccountTypeEnum.COMMON.getType());
+        addSaasAccountDTO.setValidStartTime(new Date());
+        FmResponseContent<String> saasAccount = saasAccountClient.
+                createSaasAccount(addSaasAccountDTO);
+        return saasAccount.getContent();
+    }
+
+    @Override
+    public List<SaasAccountListItemVO> querySaasAccountList(PageQuerySaasAccountDTO pageQuerySaasAccountDTO) {
+        pageQuerySaasAccountDTO.setDefaultValueNoAccountId();
+        FmResponseContent<List<SaasAccountListItemVO>> listFmResponseContent = saasAccountClient.
+                querySaasAccountPageList(pageQuerySaasAccountDTO);
+        return listFmResponseContent.getContent();
+    }
+
+    @Override
+    public void disableAccount(DeleteSaasAccountDTO deleteSaasAccountDTO) {
+        deleteSaasAccountDTO.setDefaultValueNoAccountId();
+        saasAccountClient.disableAccount(deleteSaasAccountDTO);
+    }
+
+    @Override
+    public void enableAccount(EnableSaasAccountDTO enableSaasAccountDTO) {
+        enableSaasAccountDTO.setDefaultValueNoAccountId();
+        saasAccountClient.enableAccount(enableSaasAccountDTO);
+    }
+
+    @Override
+    public void updateSaasAccount(UpdateSaasAccountDTO updateSaasAccountDTO) {
+        updateSaasAccountDTO.setDefaultValueNoAccountId();
+        saasAccountClient.updateSaasAccount(updateSaasAccountDTO);
+    }
+
+    @Override
+    public SaasAccountListItemVO querySaasAccountDetail(String accountId) {
+        PageQuerySaasAccountDTO pageQuerySaasAccountDTO = new PageQuerySaasAccountDTO();
+        pageQuerySaasAccountDTO.setAccountId(accountId);
+        List<SaasAccountListItemVO> accountListItemVOList = querySaasAccountList(pageQuerySaasAccountDTO);
+        if (!CollectionUtils.isEmpty(accountListItemVOList)) {
+            return accountListItemVOList.get(0);
+        } else {
+            throw new IllegalArgumentException("未获取到账号信息,accountId:" + accountId);
+        }
+    }
+}

+ 12 - 4
fm-person/src/main/java/com/persagy/fm/saas/common/model/dto/SaasBaseDTO.java

@@ -25,11 +25,19 @@ public class SaasBaseDTO {
      * @version V1.0 2021/3/26 11:32 上午
      */
     public void setDefaultValue() {
+        setDefaultValueNoAccountId();
+        this.setAccountId(AppContext.getContext().getAccountId());
+    }
+
+    /**
+     * 设置默认的属性,不设置账号id
+     * 账号id在某些接口中为需要用户输入的参数
+     *
+     * @author lixing
+     * @version V1.0 2021/3/26 11:32 上午
+     */
+    public void setDefaultValueNoAccountId() {
         this.setAccountBelong(AccountBelongEnum.BUSINESS.getType());
-        // accountId是运维平台部分接口需要传入的参数(例如账号关联角色,账号关联项目),而非操作人。这里增加判断,只有为空时,才赋值;
-        if (StringUtils.isEmpty(this.getAccountId())) {
-            this.setAccountId(AppContext.getContext().getAccountId());
-        }
         this.setGroupCode(AppContext.getContext().getGroupCode());
         this.setAppId(AppContext.getContext().getAppId());
     }

+ 3 - 0
fm-person/src/main/java/com/persagy/fm/workresume/model/dto/QueryWorkResumeDTO.java

@@ -23,6 +23,9 @@ public class QueryWorkResumeDTO {
     @ApiModelProperty(value = "部门主键")
     private String depId;
 
+    @ApiModelProperty(value = "部门主键id列表")
+    private List<String> depIds;
+
     @ApiModelProperty(value = "在职状态")
     private String hiredState;
 

+ 11 - 0
fm-person/src/main/java/com/persagy/fm/workresume/service/IWorkResumeService.java

@@ -114,4 +114,15 @@ public interface IWorkResumeService {
      * @version V1.0 2021/4/2 6:01 下午
      */
     List<String> queryDepManagers(String depId);
+
+    /**
+     * 更新人员的工作信息
+     *
+     * @param personId 人员id
+     * @param addedDepIds 添加的部门
+     * @param deletedDepIds 删除的部门
+     * @author lixing
+     * @version V1.0 2021/4/6 11:21 上午
+     */
+    void updatePersonWorkResume(String personId, List<String> addedDepIds, List<String> deletedDepIds);
 }

+ 35 - 0
fm-person/src/main/java/com/persagy/fm/workresume/service/impl/WorkResumeServiceImpl.java

@@ -166,6 +166,10 @@ public class WorkResumeServiceImpl extends ServiceImpl<WorkResumeMapper, WorkRes
                 queryWrapper.eq(WorkResume.PROP_DEP_ID, queryWorkResumeDTO.getDepId());
             }
 
+            if (!CollectionUtils.isEmpty(queryWorkResumeDTO.getDepIds())) {
+                queryWrapper.in(WorkResume.PROP_DEP_ID, queryWorkResumeDTO.getDepIds());
+            }
+
             if (!StringUtils.isEmpty(queryWorkResumeDTO.getIsLeader())) {
                 queryWrapper.eq(WorkResume.PROP_IS_LEADER, queryWorkResumeDTO.getIsLeader());
             }
@@ -249,4 +253,35 @@ public class WorkResumeServiceImpl extends ServiceImpl<WorkResumeMapper, WorkRes
         }
         return managerIds;
     }
+
+    @Override
+    public void updatePersonWorkResume(String personId, List<String> addedDepIds, List<String> deletedDepIds) {
+        // 添加工作信息
+        List<WorkResume> addedWorkResumes = Lists.newArrayList();
+        if (!CollectionUtils.isEmpty(addedDepIds)) {
+            addedDepIds.forEach(addedDepId -> {
+                WorkResume workResume = new WorkResume();
+                workResume.setPersonId(personId);
+                workResume.setDepId(addedDepId);
+                setDefaultValue(workResume);
+                addedWorkResumes.add(workResume);
+            });
+        }
+        if (!CollectionUtils.isEmpty(addedWorkResumes)) {
+            saveBatch(addedWorkResumes);
+        }
+
+        // 删除工作信息
+        List<WorkResume> deletedWorkResumes = Lists.newArrayList();
+        if (!CollectionUtils.isEmpty(deletedDepIds)) {
+            QueryWorkResumeDTO queryWorkResumeDTO = new QueryWorkResumeDTO();
+            queryWorkResumeDTO.setPersonId(personId);
+            queryWorkResumeDTO.setDepIds(deletedDepIds);
+            deletedWorkResumes = queryWorkResumeList(queryWorkResumeDTO);
+        }
+        if (!CollectionUtils.isEmpty(deletedWorkResumes)) {
+            deletedWorkResumes.forEach(workResume -> workResume.setValid(ValidEnum.FALSE.getType()));
+            updateBatchById(deletedWorkResumes);
+        }
+    }
 }

+ 1 - 1
fm-person/src/main/resources/mapper/PersonMapper.xml

@@ -71,7 +71,7 @@
             and w.dep_id = #{depId}
         </if>
         <if test="name != null  and name != ''">
-            and p.name like '%#{name}%'
+            and p.name like concat('%', #{name}, '%')
         </if>
         order by p.name_pinyin
     </select>