|
@@ -1,5 +1,6 @@
|
|
|
package com.persagy.fm.person.service.impl;
|
|
|
|
|
|
+import cn.hutool.extra.pinyin.PinyinUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
@@ -8,21 +9,31 @@ import com.google.common.base.CaseFormat;
|
|
|
import com.persagy.fm.common.constant.enums.ValidEnum;
|
|
|
import com.persagy.fm.common.model.RequiredParamsStorage;
|
|
|
import com.persagy.fm.common.model.dto.Sort;
|
|
|
+import com.persagy.fm.common.response.FmResponseContent;
|
|
|
import com.persagy.fm.person.dao.PersonMapper;
|
|
|
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.ResponsePersonListItemVO;
|
|
|
import com.persagy.fm.person.service.IPersonService;
|
|
|
+import com.persagy.fm.saas.account.client.SaasAccountClient;
|
|
|
+import com.persagy.fm.saas.account.constant.enums.AccountBelongEnum;
|
|
|
+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.QuerySaasAccountDTO;
|
|
|
+import com.persagy.fm.saas.account.model.vo.SaasAccountListItemVO;
|
|
|
import com.persagy.fm.workresume.model.WorkResume;
|
|
|
+import com.persagy.fm.workresume.model.dto.AddWorkResumeDTO;
|
|
|
import com.persagy.fm.workresume.model.dto.PageQueryWorkResumeDTO;
|
|
|
import com.persagy.fm.workresume.service.IWorkResumeService;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.assertj.core.util.Lists;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
+import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -37,6 +48,10 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
|
|
|
implements IPersonService {
|
|
|
@Autowired
|
|
|
private IWorkResumeService workResumeService;
|
|
|
+ @Autowired
|
|
|
+ private SaasAccountClient saasAccountClient;
|
|
|
+ @Autowired
|
|
|
+ private PersonMapper personMapper;
|
|
|
|
|
|
/**
|
|
|
* 创建人员
|
|
@@ -46,13 +61,99 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
|
|
|
* @version V1.0 2021-03-15 17:20:31
|
|
|
*/
|
|
|
@Override
|
|
|
+ @Transactional
|
|
|
public Long createPerson(AddPersonDTO addPersonDTO) {
|
|
|
+ // 判断账号是否被占用
|
|
|
+ checkUserName(addPersonDTO.getUsername());
|
|
|
+ // 创建账号
|
|
|
+ String accountId = createAccount(addPersonDTO);
|
|
|
+ // 保存人员
|
|
|
+ Person person = savePerson(addPersonDTO, accountId);
|
|
|
+ // 创建人员工作信息
|
|
|
+ saveWorkResumes(addPersonDTO, person.getId());
|
|
|
+ // 账号关联项目
|
|
|
+ // TODO: 2021/3/23
|
|
|
+ // 账号关联角色
|
|
|
+ // TODO: 2021/3/23
|
|
|
+ return person.getId();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 保存人员的工作信息
|
|
|
+ *
|
|
|
+ * @param addPersonDTO 创建人员入参
|
|
|
+ * @param personId 人员id
|
|
|
+ * @author lixing
|
|
|
+ * @version V1.0 2021/3/23 4:23 下午
|
|
|
+ */
|
|
|
+ private void saveWorkResumes(AddPersonDTO addPersonDTO, Long personId) {
|
|
|
+ List<Long> depIds = addPersonDTO.getDepIds();
|
|
|
+ for (Long depId : depIds) {
|
|
|
+ AddWorkResumeDTO addWorkResumeDTO = new AddWorkResumeDTO();
|
|
|
+ addWorkResumeDTO.setPersonId(personId);
|
|
|
+ addWorkResumeDTO.setDepId(depId);
|
|
|
+ workResumeService.createWorkResume(addWorkResumeDTO);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 保存人员信息到数据库
|
|
|
+ *
|
|
|
+ * @param addPersonDTO 创建人员入参
|
|
|
+ * @param accountId 账号id
|
|
|
+ * @return 保存后的人员对象
|
|
|
+ * @author lixing
|
|
|
+ * @version V1.0 2021/3/23 4:06 下午
|
|
|
+ */
|
|
|
+ private Person savePerson(AddPersonDTO addPersonDTO, String accountId) {
|
|
|
Person person = ConvertPersonTool.INSTANCE.convertAddDto2Entity(addPersonDTO);
|
|
|
checkDuplicate(addPersonDTO);
|
|
|
+ person.setNamePinyin(PinyinUtil.getPinyin(person.getName(), ""));
|
|
|
+ person.setAccountId(accountId);
|
|
|
// 设置默认值
|
|
|
setDefaultValue(person);
|
|
|
save(person);
|
|
|
- return person.getId();
|
|
|
+ return person;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 创建账号
|
|
|
+ *
|
|
|
+ * @param addPersonDTO 创建人员入参
|
|
|
+ * @return 账号id
|
|
|
+ * @author lixing
|
|
|
+ * @version V1.0 2021/3/23 3:42 下午
|
|
|
+ */
|
|
|
+ private String createAccount(AddPersonDTO addPersonDTO) {
|
|
|
+ AddSaasAccountDTO addSaasAccountDTO = new AddSaasAccountDTO();
|
|
|
+ addSaasAccountDTO.setAccountBelong(AccountBelongEnum.BUSINESS.getType());
|
|
|
+ addSaasAccountDTO.setGroupCode(RequiredParamsStorage.getGroupCode());
|
|
|
+ addSaasAccountDTO.setAppId(RequiredParamsStorage.getAppId());
|
|
|
+ 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();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 检查账号有没有被使用
|
|
|
+ *
|
|
|
+ * @param username 账号
|
|
|
+ * @author lixing
|
|
|
+ * @version V1.0 2021/3/23 3:15 下午
|
|
|
+ */
|
|
|
+ private void checkUserName(String username) {
|
|
|
+ QuerySaasAccountDTO querySaasAccountDTO = new QuerySaasAccountDTO();
|
|
|
+ querySaasAccountDTO.setGroupCode(RequiredParamsStorage.getGroupCode());
|
|
|
+ querySaasAccountDTO.setUsername(username);
|
|
|
+ FmResponseContent<List<SaasAccountListItemVO>> listFmResponseContent = saasAccountClient.querySaasAccountList(querySaasAccountDTO);
|
|
|
+ if (listFmResponseContent.getCount() > 0) {
|
|
|
+ throw new IllegalArgumentException("账号已被使用");
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -77,8 +178,6 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
|
|
|
*/
|
|
|
private void setDefaultValue(Person person) {
|
|
|
person.setCreator(RequiredParamsStorage.getUserId());
|
|
|
- // todo 其他默认的属性
|
|
|
-
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -150,166 +249,22 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
|
|
|
updateById(person);
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 查询人员
|
|
|
- *
|
|
|
- * @return List<Person>
|
|
|
- * @author lixing
|
|
|
- * @version V1.0 2021-03-15 17:20:31
|
|
|
- */
|
|
|
@Override
|
|
|
- public List<Person> queryPersonList(QueryPersonDTO queryPersonDTO) {
|
|
|
- QueryWrapper<Person> queryWrapper = new QueryWrapper<>();
|
|
|
- queryWrapper.eq(Person.PROP_VALID, ValidEnum.TRUE.getType());
|
|
|
- // 默认按创建时间倒序排序
|
|
|
- queryWrapper.orderBy(true, false, Person.PROP_CREATIONTIME);
|
|
|
-
|
|
|
- if (queryPersonDTO != null) {
|
|
|
-
|
|
|
- // todo 需判断使用like还是eq
|
|
|
- if (StringUtils.isNotEmpty(queryPersonDTO.getName())) {
|
|
|
- queryWrapper.like(Person.PROP_NAME, queryPersonDTO.getName());
|
|
|
- }
|
|
|
-
|
|
|
- // todo 需判断使用like还是eq
|
|
|
- if (StringUtils.isNotEmpty(queryPersonDTO.getUsername())) {
|
|
|
- queryWrapper.like(Person.PROP_USERNAME, queryPersonDTO.getUsername());
|
|
|
- }
|
|
|
-
|
|
|
- // todo 需判断使用like还是eq
|
|
|
- if (StringUtils.isNotEmpty(queryPersonDTO.getIdNumber())) {
|
|
|
- queryWrapper.like(Person.PROP_ID_NUMBER, queryPersonDTO.getIdNumber());
|
|
|
- }
|
|
|
-
|
|
|
- if (queryPersonDTO.getGender() != null) {
|
|
|
- queryWrapper.eq(Person.PROP_GENDER, queryPersonDTO.getGender());
|
|
|
- }
|
|
|
-
|
|
|
- if (queryPersonDTO.getBirthday() != null) {
|
|
|
- queryWrapper.eq(Person.PROP_BIRTHDAY, queryPersonDTO.getBirthday());
|
|
|
- }
|
|
|
-
|
|
|
- // todo 需判断使用like还是eq
|
|
|
- if (StringUtils.isNotEmpty(queryPersonDTO.getUserFrom())) {
|
|
|
- queryWrapper.like(Person.PROP_USER_FROM, queryPersonDTO.getUserFrom());
|
|
|
- }
|
|
|
-
|
|
|
- // todo 需判断使用like还是eq
|
|
|
- if (StringUtils.isNotEmpty(queryPersonDTO.getRemark())) {
|
|
|
- queryWrapper.like(Person.PROP_REMARK, queryPersonDTO.getRemark());
|
|
|
- }
|
|
|
-
|
|
|
- // todo 需判断使用like还是eq
|
|
|
- if (StringUtils.isNotEmpty(queryPersonDTO.getProfession())) {
|
|
|
- queryWrapper.like(Person.PROP_PROFESSION, queryPersonDTO.getProfession());
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- return list(queryWrapper);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public IPage<ResponsePersonListItemVO> pageQueryPersonListByDepId(PageQueryPersonByDepDTO pageQueryPersonByDepDTO) {
|
|
|
- // 根据工作信息获取部门下的人员
|
|
|
- PageQueryWorkResumeDTO pageQueryWorkResumeDTO = ConvertPersonTool.INSTANCE.
|
|
|
- convert2PageQueryWorkResumeDTO(pageQueryPersonByDepDTO);
|
|
|
- IPage<WorkResume> workResumePagedList = workResumeService.pageQueryWorkResume(pageQueryWorkResumeDTO);
|
|
|
- List<WorkResume> workResumeList = workResumePagedList.getRecords();
|
|
|
-
|
|
|
- /* 将工作信息转换为人员信息 */
|
|
|
- if (CollectionUtils.isEmpty(workResumeList)) {
|
|
|
- IPage<ResponsePersonListItemVO> result = new Page<>();
|
|
|
- result.setRecords(Lists.newArrayList());
|
|
|
- result.setTotal(0);
|
|
|
- return result;
|
|
|
- }
|
|
|
-
|
|
|
- // 获取人员的基本信息
|
|
|
- List<Long> personIdList = workResumeList.stream().map(WorkResume::getPersonId).collect(Collectors.toList());
|
|
|
- List<Person> people = listByIds(personIdList);
|
|
|
-
|
|
|
- // TODO: 2021/3/15 获取账号的信息
|
|
|
-
|
|
|
+ public IPage<ResponsePersonListItemVO> pageQueryPerson(PageQueryPersonDTO pageQueryPersonDTO) {
|
|
|
+ List<Person> people = personMapper.queryPersonList(pageQueryPersonDTO);
|
|
|
+ int total = personMapper.queryCount(pageQueryPersonDTO);
|
|
|
+ // TODO: 2021/3/23 翻译器
|
|
|
// 数据转换
|
|
|
List<ResponsePersonListItemVO> responsePersonListItems = ConvertPersonTool.INSTANCE.convert2List(people);
|
|
|
IPage<ResponsePersonListItemVO> result = new Page<>();
|
|
|
result.setRecords(responsePersonListItems);
|
|
|
- result.setTotal(workResumePagedList.getTotal());
|
|
|
+ result.setTotal(total);
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 分页查询人员
|
|
|
- *
|
|
|
- * @return IPage<Person>
|
|
|
- * @author lixing
|
|
|
- * @version V1.0 2021-03-15 17:20:31
|
|
|
- */
|
|
|
- @Override
|
|
|
- public IPage<Person> pageQueryPerson(PageQueryPersonDTO pageQueryPersonDTO) {
|
|
|
- QueryWrapper<Person> queryWrapper = new QueryWrapper<>();
|
|
|
- queryWrapper.eq(Person.PROP_VALID, ValidEnum.TRUE.getType());
|
|
|
- // 这里认为pageQueryDTO是经过校验的,肯定包含分页信息
|
|
|
- IPage<Person> pageParam = new Page<>(pageQueryPersonDTO.getPage(), pageQueryPersonDTO.getSize(), true);
|
|
|
- // 排序信息
|
|
|
- if (CollectionUtils.isEmpty(pageQueryPersonDTO.getOrders())) {
|
|
|
- // 默认按创建时间倒序排序
|
|
|
- queryWrapper.orderBy(true, false, Person.PROP_CREATIONTIME);
|
|
|
- } else {
|
|
|
- List<Sort> orders = pageQueryPersonDTO.getOrders();
|
|
|
- for (Sort sort : orders) {
|
|
|
- // 将驼峰转换为下划线格式
|
|
|
- sort.setColumn(CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, sort.getColumn()));
|
|
|
- queryWrapper.orderBy(true, sort.isAsc(), sort.getColumn());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // todo 需判断使用like还是eq
|
|
|
- if (StringUtils.isNotEmpty(pageQueryPersonDTO.getName())) {
|
|
|
- queryWrapper.like(Person.PROP_NAME, pageQueryPersonDTO.getName());
|
|
|
- }
|
|
|
-
|
|
|
- // todo 需判断使用like还是eq
|
|
|
- if (StringUtils.isNotEmpty(pageQueryPersonDTO.getUsername())) {
|
|
|
- queryWrapper.like(Person.PROP_USERNAME, pageQueryPersonDTO.getUsername());
|
|
|
- }
|
|
|
-
|
|
|
- // todo 需判断使用like还是eq
|
|
|
- if (StringUtils.isNotEmpty(pageQueryPersonDTO.getIdNumber())) {
|
|
|
- queryWrapper.like(Person.PROP_ID_NUMBER, pageQueryPersonDTO.getIdNumber());
|
|
|
- }
|
|
|
-
|
|
|
- if (pageQueryPersonDTO.getGender() != null) {
|
|
|
- queryWrapper.eq(Person.PROP_GENDER, pageQueryPersonDTO.getGender());
|
|
|
- }
|
|
|
-
|
|
|
- if (pageQueryPersonDTO.getBirthday() != null) {
|
|
|
- queryWrapper.eq(Person.PROP_BIRTHDAY, pageQueryPersonDTO.getBirthday());
|
|
|
- }
|
|
|
-
|
|
|
- // todo 需判断使用like还是eq
|
|
|
- if (StringUtils.isNotEmpty(pageQueryPersonDTO.getUserFrom())) {
|
|
|
- queryWrapper.like(Person.PROP_USER_FROM, pageQueryPersonDTO.getUserFrom());
|
|
|
- }
|
|
|
-
|
|
|
- // todo 需判断使用like还是eq
|
|
|
- if (StringUtils.isNotEmpty(pageQueryPersonDTO.getRemark())) {
|
|
|
- queryWrapper.like(Person.PROP_REMARK, pageQueryPersonDTO.getRemark());
|
|
|
- }
|
|
|
-
|
|
|
- // todo 需判断使用like还是eq
|
|
|
- if (StringUtils.isNotEmpty(pageQueryPersonDTO.getProfession())) {
|
|
|
- queryWrapper.like(Person.PROP_PROFESSION, pageQueryPersonDTO.getProfession());
|
|
|
- }
|
|
|
-
|
|
|
- return getBaseMapper().selectPage(pageParam, queryWrapper);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void resetPassWord(Long personId) {
|
|
|
- // TODO: 2021/3/22 重置人员账号的密码
|
|
|
- }
|
|
|
+// @Override
|
|
|
+// public void resetPassWord(Long personId) {
|
|
|
+// }
|
|
|
|
|
|
@Override
|
|
|
public void disablePerson(Long personId) {
|