Browse Source

完成人员部分接口的开发

lixing 4 years ago
parent
commit
87f6fa5601
21 changed files with 419 additions and 247 deletions
  1. 7 6
      fm-person/src/main/java/com/persagy/fm/person/controller/PersonController.java
  2. 54 0
      fm-person/src/main/java/com/persagy/fm/person/controller/PersonEnumController.java
  3. 1 2
      fm-person/src/main/java/com/persagy/fm/person/jms/handler/AccountMsgHandler.java
  4. 23 0
      fm-person/src/main/java/com/persagy/fm/person/model/dto/PersonStateChangeDTO.java
  5. 31 0
      fm-person/src/main/java/com/persagy/fm/person/service/IPersonEnumService.java
  6. 13 10
      fm-person/src/main/java/com/persagy/fm/person/service/IPersonService.java
  7. 45 0
      fm-person/src/main/java/com/persagy/fm/person/service/impl/PersonEnumServiceImpl.java
  8. 28 32
      fm-person/src/main/java/com/persagy/fm/person/service/impl/PersonServiceImpl.java
  9. 1 1
      fm-person/src/main/java/com/persagy/fm/saas/account/client/SaasAccountClient.java
  10. 1 3
      fm-person/src/main/java/com/persagy/fm/saas/role/controller/SaasRoleController.java
  11. 2 0
      fm-person/src/main/java/com/persagy/fm/saas/role/service/impl/SaasRoleServiceImpl.java
  12. 30 0
      fm-person/src/main/java/com/persagy/fm/workresume/constant/enums/WorkResumeEnableStateEnum.java
  13. 4 5
      fm-person/src/main/java/com/persagy/fm/workresume/constant/enums/WorkResumeStateEnum.java
  14. 0 97
      fm-person/src/main/java/com/persagy/fm/workresume/controller/WorkResumeController.java
  15. 7 4
      fm-person/src/main/java/com/persagy/fm/workresume/model/WorkResume.java
  16. 32 0
      fm-person/src/main/java/com/persagy/fm/workresume/service/IWorkResumeService.java
  17. 60 14
      fm-person/src/main/java/com/persagy/fm/workresume/service/impl/WorkResumeServiceImpl.java
  18. 0 71
      fm-person/src/main/resources/bootstrap.yml
  19. 77 0
      fm-person/src/main/resources/bootstrap1.yml
  20. 2 1
      fm-person/src/main/resources/db/init/table.sql
  21. 1 1
      fm-person/src/main/resources/mapper/PersonMapper.xml

+ 7 - 6
fm-person/src/main/java/com/persagy/fm/person/controller/PersonController.java

@@ -13,6 +13,7 @@ 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.saas.project.model.vo.ProjectTreeItemVO;
+import com.persagy.fm.translate.model.Trans;
 import org.checkerframework.checker.units.qual.A;
 import org.springframework.beans.factory.annotation.Autowired;
 import io.swagger.annotations.Api;
@@ -120,17 +121,17 @@ public class PersonController {
     @ApiOperation(value = "离职人员")
     @PostMapping("/dismiss")
     public CommonResult<FmResponseUpsertVO> dismissPerson(
-            @Valid @RequestBody DeletePersonDTO deletePersonDTO) {
-        personService.dismissPerson(deletePersonDTO.getId());
-        return ResultHelper.single(new FmResponseUpsertVO(deletePersonDTO.getId()));
+            @Valid @RequestBody PersonStateChangeDTO personStateChangeDTO) {
+        personService.dismissPerson(personStateChangeDTO.getId(), personStateChangeDTO.getDepId());
+        return ResultHelper.single(new FmResponseUpsertVO(personStateChangeDTO.getId()));
     }
 
     @ApiOperation(value = "人员恢复在职")
     @PostMapping("/rejoin")
     public CommonResult<FmResponseUpsertVO> rejoinPerson(
-            @Valid @RequestBody DeletePersonDTO deletePersonDTO) {
-        personService.rejoinPerson(deletePersonDTO.getId());
-        return ResultHelper.single(new FmResponseUpsertVO(deletePersonDTO.getId()));
+            @Valid @RequestBody PersonStateChangeDTO personStateChangeDTO) {
+        personService.rejoinPerson(personStateChangeDTO.getId(), personStateChangeDTO.getDepId());
+        return ResultHelper.single(new FmResponseUpsertVO(personStateChangeDTO.getId()));
     }
 
     @ApiOperation(value = "批量更新")

+ 54 - 0
fm-person/src/main/java/com/persagy/fm/person/controller/PersonEnumController.java

@@ -0,0 +1,54 @@
+package com.persagy.fm.person.controller;
+
+import com.persagy.fm.common.model.dto.EnumQueryDTO;
+import com.persagy.fm.common.model.vo.EnumVO;
+import com.persagy.fm.common.response.CommonResult;
+import com.persagy.fm.common.response.PageList;
+import com.persagy.fm.common.utils.ResultHelper;
+import com.persagy.fm.department.service.IDepEnumService;
+import com.persagy.fm.person.service.IPersonEnumService;
+import com.persagy.fm.person.service.IPersonService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.assertj.core.util.Lists;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+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;
+
+/**
+ * @author lixing
+ * @version V1.0 2021/3/12 6:36 下午
+ **/
+@RestController
+@Validated
+@RequestMapping("/persons/enums")
+@Api(tags = "人员枚举")
+public class PersonEnumController {
+    @Autowired
+    IPersonEnumService personEnumService;
+
+    @PostMapping("/get")
+    @ApiOperation(value="查询, type: 证件类型 -> certificate_type, 人员类型 -> person_type")
+    public CommonResult<PageList<EnumVO>> queryEnum(
+            @Valid @RequestBody EnumQueryDTO enumQueryDTO) {
+        String type = enumQueryDTO.getType();
+        List<EnumVO> resultList;
+        switch (type){
+            case "certificate_type":
+                resultList = personEnumService.queryCertificateTypeEnum();
+                break;
+            case "person_type":
+                resultList = personEnumService.queryPersonTypeEnum();
+                break;
+            default:
+                throw new IllegalArgumentException("暂不提供这种类型的枚举信息查询");
+        }
+        return ResultHelper.multi(resultList);
+    }
+}

+ 1 - 2
fm-person/src/main/java/com/persagy/fm/person/jms/handler/AccountMsgHandler.java

@@ -14,7 +14,6 @@ import com.persagy.fm.person.jms.model.AccountUpdateMsg;
 import com.persagy.fm.person.model.ConvertPersonTool;
 import com.persagy.fm.person.model.Person;
 import com.persagy.fm.person.service.IPersonService;
-import com.persagy.fm.workresume.constant.enums.WorkResumeStateEnum;
 import com.persagy.fm.workresume.model.dto.AddWorkResumeDTO;
 import com.persagy.fm.workresume.service.IWorkResumeService;
 import com.rabbitmq.client.Channel;
@@ -68,9 +67,9 @@ public class AccountMsgHandler {
         // 创建人员的工作信息
         AddWorkResumeDTO addWorkResumeDTO = new AddWorkResumeDTO();
         addWorkResumeDTO.setHiredDate(new Date());
-        addWorkResumeDTO.setState(WorkResumeStateEnum.ON_JOB.getType());
         addWorkResumeDTO.setDepId(group.getId());
         addWorkResumeDTO.setPersonId(person.getId());
+        workResumeService.createWorkResume(addWorkResumeDTO);
     }
 
 

+ 23 - 0
fm-person/src/main/java/com/persagy/fm/person/model/dto/PersonStateChangeDTO.java

@@ -0,0 +1,23 @@
+package com.persagy.fm.person.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author lixing
+ * @version V1.0 2021-03-15 17:20:33
+ */
+@Data
+@ApiModel(value = "人员状态变化入参")
+public class PersonStateChangeDTO {
+    @NotNull(message = "id不能为空")
+    @ApiModelProperty(value = "id", required = true)
+    private String id;
+
+    @NotNull(message = "部门id不能为空")
+    @ApiModelProperty(value = "部门id", required = true)
+    private String depId;
+}

+ 31 - 0
fm-person/src/main/java/com/persagy/fm/person/service/IPersonEnumService.java

@@ -0,0 +1,31 @@
+package com.persagy.fm.person.service;
+
+import com.persagy.fm.common.model.vo.EnumVO;
+
+import java.util.List;
+
+/**
+ * 人员枚举service接口
+ *
+ * @author lixing
+ * @version V1.0 2021/3/31 9:32 上午
+ **/
+public interface IPersonEnumService {
+    /**
+     * 查询证件类型枚举
+     *
+     * @return 证件类型枚举
+     * @author lixing
+     * @version V1.0 2021/3/31 9:33 上午
+     */
+    List<EnumVO> queryCertificateTypeEnum();
+
+    /**
+     * 查询人员类型枚举
+     *
+     * @return 人员类型枚举
+     * @author lixing
+     * @version V1.0 2021/3/31 9:33 上午
+     */
+    List<EnumVO> queryPersonTypeEnum();
+}

+ 13 - 10
fm-person/src/main/java/com/persagy/fm/person/service/IPersonService.java

@@ -47,6 +47,7 @@ public interface IPersonService {
 
     /**
      * 通过主键数组查询人员
+     *
      * @param ids 主键List
      * @return
      */
@@ -99,14 +100,14 @@ public interface IPersonService {
      */
     List<Person> queryByAccountId(String accountId);
 
-//    /**
-//     * 重置人员账号的密码
-//     *
-//     * @param personId 人员id
-//     * @author lixing
-//     * @version V1.0 2021/3/22 10:28 上午
-//     */
-//    void resetPassWord(Long personId);
+    //    /**
+    //     * 重置人员账号的密码
+    //     *
+    //     * @param personId 人员id
+    //     * @author lixing
+    //     * @version V1.0 2021/3/22 10:28 上午
+    //     */
+    //    void resetPassWord(Long personId);
 
     /**
      * 禁用人员
@@ -121,19 +122,21 @@ public interface IPersonService {
      * 解雇人员
      *
      * @param personId 人员id
+     * @param depId    部门id
      * @author lixing
      * @version V1.0 2021/3/22 10:39 上午
      */
-    void dismissPerson(String personId);
+    void dismissPerson(String personId, String depId);
 
     /**
      * 恢复入职
      *
      * @param personId 人员id
+     * @param depId    部门id
      * @author lixing
      * @version V1.0 2021/3/22 10:44 上午
      */
-    void rejoinPerson(String personId);
+    void rejoinPerson(String personId, String depId);
 
     /**
      * 批量更新人员信息

+ 45 - 0
fm-person/src/main/java/com/persagy/fm/person/service/impl/PersonEnumServiceImpl.java

@@ -0,0 +1,45 @@
+package com.persagy.fm.person.service.impl;
+
+import com.persagy.fm.common.model.vo.EnumVO;
+import com.persagy.fm.department.constant.enums.DepTypeEnum;
+import com.persagy.fm.person.constant.enums.CertificateTypeEnum;
+import com.persagy.fm.person.constant.enums.PersonTypeEnum;
+import com.persagy.fm.person.service.IPersonEnumService;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 人员枚举类service层
+ *
+ * @author lixing
+ * @version V1.0 2021/3/31 9:35 上午
+ **/
+@Service
+public class PersonEnumServiceImpl implements IPersonEnumService {
+    @Override
+    public List<EnumVO> queryCertificateTypeEnum() {
+        List<EnumVO> resultList = new ArrayList<>(CertificateTypeEnum.values().length);
+        Arrays.asList(CertificateTypeEnum.values()).forEach(certificateTypeEnum -> {
+            EnumVO enumVO = new EnumVO();
+            enumVO.setKey(certificateTypeEnum.getType());
+            enumVO.setValue(certificateTypeEnum.getDesc());
+            resultList.add(enumVO);
+        });
+        return resultList;
+    }
+
+    @Override
+    public List<EnumVO> queryPersonTypeEnum() {
+        List<EnumVO> resultList = new ArrayList<>(PersonTypeEnum.values().length);
+        Arrays.asList(PersonTypeEnum.values()).forEach(personTypeEnum -> {
+            EnumVO enumVO = new EnumVO();
+            enumVO.setKey(personTypeEnum.getType());
+            enumVO.setValue(personTypeEnum.getDesc());
+            resultList.add(enumVO);
+        });
+        return resultList;
+    }
+}

+ 28 - 32
fm-person/src/main/java/com/persagy/fm/person/service/impl/PersonServiceImpl.java

@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.persagy.fm.common.constant.PageQueryConstants;
 import com.persagy.fm.common.constant.enums.ValidEnum;
 import com.persagy.fm.common.context.DefaultAppContext;
 import com.persagy.fm.common.response.FmResponseContent;
@@ -16,10 +15,10 @@ 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.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.vo.SaasAccountListItemVO;
 import com.persagy.fm.saas.accountproject.client.SaasAccountProjectClient;
@@ -27,10 +26,9 @@ import com.persagy.fm.saas.accountproject.model.dto.AddSaasAccountProjectDTO;
 import com.persagy.fm.saas.accountrole.client.SaasAccountRoleClient;
 import com.persagy.fm.saas.accountrole.constant.enums.AccountRoleTypeEnum;
 import com.persagy.fm.saas.accountrole.model.dto.AddSaasAccountRoleDTO;
-import com.persagy.fm.workresume.constant.enums.WorkResumeStateEnum;
-import com.persagy.fm.workresume.model.WorkResume;
+import com.persagy.fm.workresume.constant.enums.WorkResumeEnableStateEnum;
+import com.persagy.fm.workresume.constant.enums.WorkResumeHiredStateEnum;
 import com.persagy.fm.workresume.model.dto.AddWorkResumeDTO;
-import com.persagy.fm.workresume.model.dto.QueryWorkResumeDTO;
 import com.persagy.fm.workresume.service.IWorkResumeService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -40,6 +38,7 @@ import org.springframework.util.CollectionUtils;
 
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 人员(Person) service层
@@ -350,6 +349,9 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
     public IPage<ResponsePersonListItemVO> pageQueryPerson(PageQueryPersonDTO pageQueryPersonDTO) {
         List<Person> people = personMapper.queryPersonList(pageQueryPersonDTO);
         int total = personMapper.queryCount(pageQueryPersonDTO);
+
+        List<String> accountIds = people.stream().map(Person::getAccountId).collect(Collectors.toList());
+
         // TODO: 2021/3/23 翻译器
         // 数据转换
         List<ResponsePersonListItemVO> responsePersonListItems = ConvertPersonTool.INSTANCE.convert2List(people);
@@ -359,47 +361,31 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
         return result;
     }
 
-    //    @Override
-    //    public void resetPassWord(Long personId) {
-    //    }
-
     @Override
     public void disablePerson(String personId) {
         // 禁用账号
         Person person = queryPersonDetail(personId);
         String accountId = person.getAccountId();
         DeleteSaasAccountDTO deleteSaasAccountDTO = new DeleteSaasAccountDTO();
+        deleteSaasAccountDTO.setDefaultValue();
         deleteSaasAccountDTO.setAccountId(accountId);
-        saasAccountClient.dismissAccount(deleteSaasAccountDTO);
+        saasAccountClient.disableAccount(deleteSaasAccountDTO);
 
         // 工作信息状态更新为禁用
-        dismissWorkResume(personId);
-    }
-
-    /**
-     * 禁用工作信息
-     *
-     * @param personId 人员id
-     * @author lixing
-     * @version V1.0 2021/3/30 8:20 下午
-     */
-    private void dismissWorkResume(String personId) {
-        QueryWorkResumeDTO queryWorkResumeDTO = new QueryWorkResumeDTO();
-        queryWorkResumeDTO.setPersonId(personId);
-        queryWorkResumeDTO.setState(WorkResumeStateEnum.ON_JOB.getType());
-        List<WorkResume> workResumes = workResumeService.queryWorkResumeList(queryWorkResumeDTO);
-        workResumes.forEach(workResume -> workResume.setState(WorkResumeStateEnum.DISMISS.getType()));
-        workResumeService.batchUpdateWorkResume(workResumes);
+        workResumeService.changeWorkResumeEnableStateByPersonId(
+                personId, null, WorkResumeEnableStateEnum.DISABLE.getType());
     }
 
     @Override
-    public void dismissPerson(String personId) {
-        // TODO: 2021/3/22 人员离职
+    public void dismissPerson(String personId, String depId) {
+        workResumeService.changeWorkResumeHiredStateByPersonId(
+                personId, depId, WorkResumeHiredStateEnum.DISMISS.getType());
     }
 
     @Override
-    public void rejoinPerson(String personId) {
-        // TODO: 2021/3/22 恢复入职
+    public void rejoinPerson(String personId, String depId) {
+        workResumeService.changeWorkResumeHiredStateByPersonId(
+                personId, depId, WorkResumeHiredStateEnum.ON_JOB.getType());
     }
 
     @Override
@@ -415,7 +401,17 @@ public class PersonServiceImpl extends ServiceImpl<PersonMapper, Person>
 
     @Override
     public void enablePerson(String personId) {
-        // TODO: 2021/3/26 解禁人员
+        // 启用账号
+        Person person = queryPersonDetail(personId);
+        String accountId = person.getAccountId();
+        EnableSaasAccountDTO enableSaasAccountDTO = new EnableSaasAccountDTO();
+        enableSaasAccountDTO.setDefaultValue();
+        enableSaasAccountDTO.setAccountId(accountId);
+        saasAccountClient.enableAccount(enableSaasAccountDTO);
+
+        // 工作信息状态更新为启用
+        workResumeService.changeWorkResumeEnableStateByPersonId(
+                personId, null, WorkResumeEnableStateEnum.ENABLE.getType());
     }
 
     @Override

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

@@ -64,7 +64,7 @@ public interface SaasAccountClient {
      * @version V1.0 2021/3/30 8:16 下午
      */
     @PostMapping("/account/deleteSaasAccount")
-    FmResponseMsg dismissAccount(@RequestBody DeleteSaasAccountDTO deleteSaasAccountDTO);
+    FmResponseMsg disableAccount(@RequestBody DeleteSaasAccountDTO deleteSaasAccountDTO);
 
     /**
      * 启用账号

+ 1 - 3
fm-person/src/main/java/com/persagy/fm/saas/role/controller/SaasRoleController.java

@@ -18,12 +18,10 @@ import javax.validation.Valid;
 import java.util.List;
 
 /**
- * 控制层
- *
  * @author lixing
  * @version V1.0 2021-03-22 19:04:01
  */
-@Api(tags = "")
+@Api(tags = "岗位角色管理")
 @Validated
 @RestController
 @RequestMapping("saasRoles")

+ 2 - 0
fm-person/src/main/java/com/persagy/fm/saas/role/service/impl/SaasRoleServiceImpl.java

@@ -2,6 +2,7 @@ package com.persagy.fm.saas.role.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.persagy.fm.common.context.AppContext;
 import com.persagy.fm.common.context.DefaultAppContext;
 import com.persagy.fm.common.response.FmResponseContent;
 import com.persagy.fm.saas.account.constant.enums.AccountBelongEnum;
@@ -53,6 +54,7 @@ public class SaasRoleServiceImpl implements ISaasRoleService {
      * @version V1.0 2021/3/12 12:29 下午
      */
     private void setDefaultValue(SaasRole saasRole) {
+        saasRole.setAccountId(AppContext.getContext().getAccountId());
         saasRole.setAccountBelong(AccountBelongEnum.BUSINESS.getType());
         saasRole.setAppId(DefaultAppContext.getContext().getAppId());
         saasRole.setGroupCode(DefaultAppContext.getContext().getGroupCode());

+ 30 - 0
fm-person/src/main/java/com/persagy/fm/workresume/constant/enums/WorkResumeEnableStateEnum.java

@@ -0,0 +1,30 @@
+package com.persagy.fm.workresume.constant.enums;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 工作信息启用状态枚举类
+ *
+ * @author lixing
+ * @version V1.0 2021/3/23 4:16 下午
+ **/
+public enum WorkResumeEnableStateEnum {
+    /**
+     * 启用状态
+     */
+    ENABLE("0", "启用"),
+    DISABLE("1", "禁用");
+
+    @Setter
+    @Getter
+    private String type;
+    @Setter
+    @Getter
+    private String desc;
+
+    WorkResumeEnableStateEnum(String type, String desc) {
+        this.type = type;
+        this.desc = desc;
+    }
+}

+ 4 - 5
fm-person/src/main/java/com/persagy/fm/workresume/constant/enums/WorkResumeStateEnum.java

@@ -4,18 +4,17 @@ import lombok.Getter;
 import lombok.Setter;
 
 /**
- * 工作状态枚举类
+ * 工作信息在职状态枚举类
  *
  * @author lixing
  * @version V1.0 2021/3/23 4:16 下午
  **/
-public enum WorkResumeStateEnum {
+public enum WorkResumeHiredStateEnum {
     /**
      * 工作状态
      */
     ON_JOB("0", "在职"),
-    DISMISS("1", "离职"),
-    DISABLE("2", "禁用");
+    DISMISS("1", "离职");
 
     @Setter
     @Getter
@@ -24,7 +23,7 @@ public enum WorkResumeStateEnum {
     @Getter
     private String desc;
 
-    WorkResumeStateEnum(String type, String desc) {
+    WorkResumeHiredStateEnum(String type, String desc) {
         this.type = type;
         this.desc = desc;
     }

+ 0 - 97
fm-person/src/main/java/com/persagy/fm/workresume/controller/WorkResumeController.java

@@ -1,97 +0,0 @@
-package com.persagy.fm.workresume.controller;
-
-import com.persagy.fm.common.response.*;
-import com.persagy.fm.common.utils.ResultHelper;
-import com.persagy.fm.workresume.model.ConvertWorkResumeTool;
-import com.persagy.fm.workresume.model.WorkResume;
-import com.persagy.fm.workresume.model.dto.*;
-import com.persagy.fm.workresume.model.vo.ResponseWorkResumeItemVO;
-import com.persagy.fm.workresume.model.vo.ResponseWorkResumeListItemVO;
-import com.persagy.fm.workresume.service.IWorkResumeService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.validation.annotation.Validated;
-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;
-
-/**
- * 工作信息控制层
- *
- * @author lixing
- * @version V1.0 2021-03-15 17:20:06
- */
-@Api(tags = "工作信息")
-@Validated
-@RestController
-@RequestMapping("workResumes")
-public class WorkResumeController {
-    @Autowired
-    private IWorkResumeService workResumeService;
-
-    @ApiOperation(value = "创建工作信息")
-    @PostMapping("/create")
-    public CommonResult<FmResponseUpsertVO> createWorkResume(
-            @Valid @RequestBody AddWorkResumeDTO addWorkResumeDTO) {
-        String id = workResumeService.createWorkResume(addWorkResumeDTO);
-        return ResultHelper.single(new FmResponseUpsertVO(id));
-    }
-
-    @ApiOperation(value = "工作信息详情")
-    @PostMapping("/get")
-    public CommonResult<ResponseWorkResumeItemVO> queryWorkResumeDetail(
-            @Valid @RequestBody QueryWorkResumeDetailDTO queryWorkResumeDetailDTO) {
-        WorkResume workResume = workResumeService.queryWorkResumeDetail(queryWorkResumeDetailDTO.getId());
-        ResponseWorkResumeItemVO responseWorkResumeItemVO = ConvertWorkResumeTool.INSTANCE.convert2ResponseItemDTO(workResume);
-        return ResultHelper.single(responseWorkResumeItemVO);
-    }
-
-
-    @ApiOperation(value = "更新工作信息")
-    @PostMapping("/update")
-    public CommonResult<FmResponseUpsertVO> updateWorkResume(
-            @Valid @RequestBody UpdateWorkResumeDTO updateWorkResumeDTO) {
-        workResumeService.updateWorkResume(updateWorkResumeDTO);
-        return ResultHelper.single(new FmResponseUpsertVO(updateWorkResumeDTO.getId()));
-    }
-
-
-    @ApiOperation(value = "删除工作信息")
-    @PostMapping("/delete")
-    public CommonResult deleteWorkResume(
-            @RequestBody @Valid DeleteWorkResumeDTO deleteWorkResumeDTO) {
-        workResumeService.deleteWorkResume(deleteWorkResumeDTO.getId());
-        return ResultHelper.success("删除成功");
-    }
-
-
-    @ApiOperation(value = "工作信息列表")
-    @PostMapping("/query")
-    public CommonResult<PageList<ResponseWorkResumeListItemVO>> queryWorkResume(
-            @Valid @RequestBody QueryWorkResumeDTO queryWorkResumeDTO) {
-        List<WorkResume> workResumeList = workResumeService.queryWorkResumeList(queryWorkResumeDTO);
-        List<ResponseWorkResumeListItemVO> resultList = ConvertWorkResumeTool.INSTANCE.convert2List(workResumeList);
-        return ResultHelper.multi(resultList);
-    }
-
-    //@ApiOperation(value = "工作信息列表, 分页查询")
-    //@PostMapping("/query")
-    //public CommonResult<List<ResponseWorkResumeListItemVO>> queryWorkResume(
-    //        @Valid @RequestBody PageQueryWorkResumeDTO pageQueryWorkResumeDTO) {
-    //    IPage<ResponseWorkResumeListItemVO> pagedList = workResumeService.pageQueryWorkResume(pageQueryWorkResumeDTO);
-    //    IPage<ResponseWorkResumeListItemVO> pagedResultList = pagedList.convert(item -> {
-    //        try {
-    //           return ConvertWorkResumeTool.INSTANCE.convert2ResponseListItemDTO(item);
-    //        } catch (Exception e) {
-    //            throw new IllegalArgumentException("分页查询,WorkResume实体类转换为列表对象发生异常", e);
-    //        }
-    //    });
-    //    return ResultHelper.multi(pagedResultList);;
-    //}
-}
-

+ 7 - 4
fm-person/src/main/java/com/persagy/fm/workresume/model/WorkResume.java

@@ -20,13 +20,16 @@ public class WorkResume extends AuditableEntity<WorkResume> implements Serializa
     private static final long serialVersionUID = -83670378701786778L;
 
     @ApiModelProperty("人员主键")
-    private Long personId;
+    private String personId;
 
     @ApiModelProperty("部门主键")
-    private Long depId;
+    private String depId;
 
-    @ApiModelProperty("状态")
-    private String state;
+    @ApiModelProperty("在职状态")
+    private String hiredState;
+
+    @ApiModelProperty("启用状态")
+    private String enableState;
 
     @ApiModelProperty("入职时间")
     private Date hiredDate;

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

@@ -67,6 +67,16 @@ public interface IWorkResumeService {
     List<WorkResume> queryWorkResumeList(QueryWorkResumeDTO queryWorkResumeDTO);
 
     /**
+     * 查询一组人员的工作信息
+     *
+     * @param personIdList 一组人员id
+     * @return List<WorkResume>
+     * @author lixing
+     * @version V1.0 2021-03-15 17:20:06
+     */
+    List<WorkResume> queryWorkResumeListByPersonIdList(List<String> personIdList);
+
+    /**
      * 分页查询工作信息
      *
      * @param pageQueryWorkResumeDTO pageQueryDTO
@@ -84,4 +94,26 @@ public interface IWorkResumeService {
      * @version V1.0 2021/3/30 8:26 下午
      */
     void batchUpdateWorkResume(List<WorkResume> workResumes);
+
+    /**
+     * 更新人员的工作信息在职状态
+     *
+     * @param personId 人员id 不可为空
+     * @param depId 部门id 可为空
+     * @param workResumeHiredState 工作信息在职状态
+     * @author lixing
+     * @version V1.0 2021/3/31 5:32 下午
+     */
+    void changeWorkResumeHiredStateByPersonId(String personId, String depId, String workResumeHiredState);
+
+    /**
+     * 更新人员的工作信息启用状态
+     *
+     * @param personId 人员id 不可为空
+     * @param depId 部门id 可为空
+     * @param workResumeEnableState 工作信息启用状态
+     * @author lixing
+     * @version V1.0 2021/3/31 5:32 下午
+     */
+    void changeWorkResumeEnableStateByPersonId(String personId, String depId, String workResumeEnableState);
 }

+ 60 - 14
fm-person/src/main/java/com/persagy/fm/workresume/service/impl/WorkResumeServiceImpl.java

@@ -1,30 +1,30 @@
 package com.persagy.fm.workresume.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.base.CaseFormat;
+import com.persagy.fm.common.constant.enums.ValidEnum;
 import com.persagy.fm.common.context.DefaultAppContext;
-import com.persagy.fm.workresume.constant.enums.WorkResumeStateEnum;
+import com.persagy.fm.common.model.dto.Sort;
+import com.persagy.fm.workresume.constant.enums.WorkResumeEnableStateEnum;
+import com.persagy.fm.workresume.constant.enums.WorkResumeHiredStateEnum;
+import com.persagy.fm.workresume.dao.WorkResumeMapper;
 import com.persagy.fm.workresume.model.ConvertWorkResumeTool;
 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.model.dto.QueryWorkResumeDTO;
 import com.persagy.fm.workresume.model.dto.UpdateWorkResumeDTO;
-import com.persagy.fm.workresume.dao.WorkResumeMapper;
 import com.persagy.fm.workresume.service.IWorkResumeService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
-import com.persagy.fm.common.constant.enums.ValidEnum;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
 
 import java.util.Date;
 import java.util.List;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.google.common.base.CaseFormat;
-import com.persagy.fm.common.model.dto.Sort;
-import org.springframework.util.CollectionUtils;
-import org.springframework.util.StringUtils;
-
 /**
  * 工作信息(WorkResume) service层
  *
@@ -63,8 +63,11 @@ public class WorkResumeServiceImpl extends ServiceImpl<WorkResumeMapper, WorkRes
         if (workResume.getHiredDate() == null) {
             workResume.setHiredDate(new Date());
         }
-        if (workResume.getState() == null) {
-            workResume.setState(WorkResumeStateEnum.ON_JOB.getType());
+        if (workResume.getHiredDate() == null) {
+            workResume.setHiredState(WorkResumeHiredStateEnum.ON_JOB.getType());
+        }
+        if (workResume.getEnableState() == null) {
+            workResume.setEnableState(WorkResumeEnableStateEnum.ENABLE.getType());
         }
     }
 
@@ -231,4 +234,47 @@ public class WorkResumeServiceImpl extends ServiceImpl<WorkResumeMapper, WorkRes
     public void batchUpdateWorkResume(List<WorkResume> workResumes) {
         updateBatchById(workResumes);
     }
+
+    @Override
+    public List<WorkResume> queryWorkResumeListByPersonIdList(List<String> personIdList) {
+        QueryWrapper<WorkResume> workResumeQueryWrapper = new QueryWrapper<>();
+        workResumeQueryWrapper.in(WorkResume.PROP_PERSON_ID, personIdList);
+        return list(workResumeQueryWrapper);
+    }
+
+    @Override
+    public void changeWorkResumeHiredStateByPersonId(String personId, String depId, String workResumeHiredState) {
+        // 校验更新人员工作信息在职状态入参
+        if (StringUtils.isEmpty(personId)) {
+            throw new IllegalArgumentException("更新人员工作信息状态,缺少personId");
+        }
+        if (StringUtils.isEmpty(depId)) {
+            throw new IllegalArgumentException("更新人员工作信息状态,缺少depId");
+        }
+
+        QueryWorkResumeDTO queryWorkResumeDTO = new QueryWorkResumeDTO();
+        queryWorkResumeDTO.setPersonId(personId);
+        queryWorkResumeDTO.setDepId(depId);
+
+        List<WorkResume> workResumes = queryWorkResumeList(queryWorkResumeDTO);
+        workResumes.forEach(workResume -> workResume.setHiredState(workResumeHiredState));
+        updateBatchById(workResumes);
+    }
+
+
+    @Override
+    public void changeWorkResumeEnableStateByPersonId(String personId, String depId, String workResumeEnableState) {
+        // 校验更新人员工作信息启用状态入参
+        if (StringUtils.isEmpty(personId)) {
+            throw new IllegalArgumentException("更新人员工作信息状态,缺少personId");
+        }
+
+        QueryWorkResumeDTO queryWorkResumeDTO = new QueryWorkResumeDTO();
+        queryWorkResumeDTO.setPersonId(personId);
+        queryWorkResumeDTO.setDepId(depId);
+
+        List<WorkResume> workResumes = queryWorkResumeList(queryWorkResumeDTO);
+        workResumes.forEach(workResume -> workResume.setEnableState(workResumeEnableState));
+        updateBatchById(workResumes);
+    }
 }

+ 0 - 71
fm-person/src/main/resources/bootstrap.yml

@@ -1,77 +1,6 @@
 spring:
   application:
     name: fm-person
-  datasource:
-    druid:
-      stat-view-servlet:
-        enabled: true
-        urlPattern: /druid/*
-        resetEnable: true
-        loginUsername: admin
-        loginPassword: admin
-      web-stat-filter:
-        enabled: true
-        urlPattern: /*
-        sessionStatEnable: false
-        sessionStatMaxCount: 1000
-        profileEnable: true
-    dynamic:
-      enabled: true
-      primary: fm-person
-      strict: false
-      druid: #以下是支持的全局默认值
-        initial-size: 5
-        max-active: 20
-        min-idle: 5
-        max-wait: 60000
-        pool-prepared-statements: true
-        max-pool-prepared-statement-per-connection-size: 20
-        validation-query: SELECT 1
-        test-while-idle: true
-        test-on-borrow: false
-        test-on-return: false
-        time-between-eviction-runs-millis: 60000
-        min-evictable-idle-time-millis: 300000
-        max-evictable-idle-time-millis: 900000
-        keep-alive: true
-      datasource:
-        fm-person:
-          url: jdbc:mysql://192.168.64.15:9934/${spring.application.name}?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
-          username: root
-          password: brzj123456
-          driver-class-name: com.mysql.cj.jdbc.Driver
-          schema: classpath*:db/init/table.sql
-          data: classpath*:db/init/data.sql
-          continue-on-error: true
-          separator: ";"
-          druid: # 以下是独立参数,每个库可以重新设置
-            initial-size:
-            validation-query: select 1 FROM DUAL #比如oracle就需要重新设置这个
-            public-key: #(非全局参数)设置即表示启用加密,底层会自动帮你配置相关的连接参数和filter,推荐使用本项目自带的加密方法。
 
-server:
-  port: ${SERVER_PORT:8814}
-
-dep:
-  amqp:
-    exchange:
-      saas: saas.common.topic
-    routingKey:
-      saas: saas.common.group
-    queue:
-      saas: dep.saas.queue
-
-person:
-  amqp:
-    exchange:
-      saas: saas.common.topic
-    routingKey:
-      saas: saas.common.account
-    queue:
-      saas: person.saas.queue
-
-#mybatis-plus:
-#  mapper-locations: classpath*:/mapper/*Mapper.xml
-#  typeAliasesPackage: com.persagy.fm.test.model.entity
 
 

+ 77 - 0
fm-person/src/main/resources/bootstrap1.yml

@@ -0,0 +1,77 @@
+spring:
+  application:
+    name: fm-person
+  datasource:
+    druid:
+      stat-view-servlet:
+        enabled: true
+        urlPattern: /druid/*
+        resetEnable: true
+        loginUsername: admin
+        loginPassword: admin
+      web-stat-filter:
+        enabled: true
+        urlPattern: /*
+        sessionStatEnable: false
+        sessionStatMaxCount: 1000
+        profileEnable: true
+    dynamic:
+      enabled: true
+      primary: fm-person
+      strict: false
+      druid: #以下是支持的全局默认值
+        initial-size: 5
+        max-active: 20
+        min-idle: 5
+        max-wait: 60000
+        pool-prepared-statements: true
+        max-pool-prepared-statement-per-connection-size: 20
+        validation-query: SELECT 1
+        test-while-idle: true
+        test-on-borrow: false
+        test-on-return: false
+        time-between-eviction-runs-millis: 60000
+        min-evictable-idle-time-millis: 300000
+        max-evictable-idle-time-millis: 900000
+        keep-alive: true
+      datasource:
+        fm-person:
+          url: jdbc:mysql://192.168.64.15:9934/${spring.application.name}?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
+          username: root
+          password: brzj123456
+          driver-class-name: com.mysql.cj.jdbc.Driver
+          schema: classpath*:db/init/table.sql
+          data: classpath*:db/init/data.sql
+          continue-on-error: true
+          separator: ";"
+          druid: # 以下是独立参数,每个库可以重新设置
+            initial-size:
+            validation-query: select 1 FROM DUAL #比如oracle就需要重新设置这个
+            public-key: #(非全局参数)设置即表示启用加密,底层会自动帮你配置相关的连接参数和filter,推荐使用本项目自带的加密方法。
+
+server:
+  port: ${SERVER_PORT:8814}
+
+dep:
+  amqp:
+    exchange:
+      saas: saas.common.topic
+    routingKey:
+      saas: saas.common.group
+    queue:
+      saas: dep.saas.queue
+
+person:
+  amqp:
+    exchange:
+      saas: saas.common.topic
+    routingKey:
+      saas: saas.common.account
+    queue:
+      saas: person.saas.queue
+
+#mybatis-plus:
+#  mapper-locations: classpath*:/mapper/*Mapper.xml
+#  typeAliasesPackage: com.persagy.fm.test.model.entity
+
+

+ 2 - 1
fm-person/src/main/resources/db/init/table.sql

@@ -85,7 +85,8 @@ CREATE TABLE IF NOT EXISTS `work_resume`
     `id`             varchar(64) NOT NULL DEFAULT '' COMMENT 'id',
     `person_id`      varchar(64) NOT NULL DEFAULT '' COMMENT '人员主键',
     `dep_id`         varchar(64) NOT NULL DEFAULT '' COMMENT '部门主键',
-    `state`          varchar(10) NOT NULL DEFAULT '0' COMMENT '状态',
+    `hired_state`          varchar(10) NOT NULL DEFAULT '0' COMMENT '在职状态',
+    `enable_state`          varchar(10) NOT NULL DEFAULT '0' COMMENT '启用状态',
     `hired_date`     timestamp   NULL     DEFAULT NULL COMMENT '入职时间',
     `departure_date` timestamp   NULL     DEFAULT NULL COMMENT '离职时间',
     `is_leader`      varchar(10)          DEFAULT NULL COMMENT '是否是部门主管',

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

@@ -28,7 +28,7 @@
 
     <select id="queryPersonList" parameterType="com.persagy.fm.person.model.dto.PageQueryPersonDTO"
             resultType="com.persagy.fm.person.model.Person">
-        select p.id as id, p.name as name, p.profession as profession
+        select p.id as id, p.name as name, p.profession as profession, p.account_id as account_id
         from person p,
         work_resume w
         where p.id = w.person_id