|
@@ -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)) {
|