From f6f7bee82e4acf98b5a9bd7c4df15c4edaeef703 Mon Sep 17 00:00:00 2001 From: zhaoqifeng Date: Mon, 23 Aug 2021 11:05:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E4=BA=BA=E5=91=98=E8=B0=83?= =?UTF-8?q?=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/dto/StaffTransferRecordDTO.java | 5 +- .../dto/form/StaffTransferV2FormDTO.java | 27 ++++ .../com/epmet/controller/StaffController.java | 15 ++ .../entity/StaffTransferRecordEntity.java | 16 +- .../service/StaffOrgRelationService.java | 9 ++ .../java/com/epmet/service/StaffService.java | 10 ++ .../impl/StaffOrgRelationServiceImpl.java | 19 +++ .../epmet/service/impl/StaffServiceImpl.java | 144 ++++++++++++++++++ 8 files changed, 238 insertions(+), 7 deletions(-) create mode 100644 epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/StaffTransferV2FormDTO.java diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/StaffTransferRecordDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/StaffTransferRecordDTO.java index 79899e2e05..ce08a1e8f0 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/StaffTransferRecordDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/StaffTransferRecordDTO.java @@ -57,12 +57,15 @@ public class StaffTransferRecordDTO implements Serializable { * 调动前组织Id */ private String oldAgencyId; + private String oldOrgType; + private String oldOrgId; /** * 调动后组织Id */ private String agencyId; - + private String orgType; + private String orgId; /** * 备注说明 */ diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/StaffTransferV2FormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/StaffTransferV2FormDTO.java new file mode 100644 index 0000000000..dc26e0eef9 --- /dev/null +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/StaffTransferV2FormDTO.java @@ -0,0 +1,27 @@ +package com.epmet.dto.form; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Description + * @Author zhaoqifeng + * @Date 2021/8/20 15:26 + */ +@NoArgsConstructor +@Data +public class StaffTransferV2FormDTO implements Serializable { + + private static final long serialVersionUID = 1217329965082876795L; + @NotBlank(message = "组织ID不能为空") + private String orgId; + @NotBlank(message = "组织类型不能为空") + private String orgType; + @NotBlank(message = "工作人员ID不能为空") + private String staffId; + @NotBlank(message = "备注说明不能为空") + private String remarks; +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/StaffController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/StaffController.java index 2dafc1e158..b95b96c0b9 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/StaffController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/StaffController.java @@ -145,6 +145,21 @@ public class StaffController { return new Result(); } + /** + * 工作人员调动V2 + * + * @author zhaoqifeng + * @date 2020/8/27 16:12 + * @param tokenDto + * @param formDTO + * @return com.epmet.commons.tools.utils.Result + */ + @PostMapping("stafftransferv2") + public Result staffTransferV2(@LoginUser TokenDto tokenDto, @RequestBody StaffTransferV2FormDTO formDTO){ + staffService.staffTransferV2(tokenDto, formDTO); + return new Result(); + } + /** * 根据staffId查询用户基本信息 * @author sun diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/StaffTransferRecordEntity.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/StaffTransferRecordEntity.java index b52c91c45e..2b31698659 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/StaffTransferRecordEntity.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/StaffTransferRecordEntity.java @@ -53,15 +53,19 @@ public class StaffTransferRecordEntity extends BaseEpmetEntity { */ private String operatedStaffId; - /** - * 调动前组织Id - */ + /** + * 调动前组织Id + */ private String oldAgencyId; + private String oldOrgType; + private String oldOrgId; - /** - * 调动后组织Id - */ + /** + * 调动后组织Id + */ private String agencyId; + private String orgType; + private String orgId; /** * 备注说明 diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/StaffOrgRelationService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/StaffOrgRelationService.java index ce5d6ba496..be1286c28e 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/StaffOrgRelationService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/StaffOrgRelationService.java @@ -92,4 +92,13 @@ public interface StaffOrgRelationService extends BaseService wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(StaffOrgRelationEntity::getStaffId, staffId); + wrapper.eq(StaffOrgRelationEntity::getDelFlag, NumConstant.ZERO_STR); + + return ConvertUtils.sourceToTarget(baseDao.selectOne(wrapper), StaffOrgRelationDTO.class); + } + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/StaffServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/StaffServiceImpl.java index 3aaa7a5484..811adc098c 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/StaffServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/StaffServiceImpl.java @@ -1,14 +1,17 @@ package com.epmet.service.impl; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.redis.RedisKeys; import com.epmet.commons.tools.redis.RedisUtils; +import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.CustomerAgencyConstant; +import com.epmet.constant.OrgInfoConstant; import com.epmet.dao.CustomerAgencyDao; import com.epmet.dao.CustomerStaffAgencyDao; import com.epmet.dto.*; @@ -24,6 +27,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -68,6 +72,8 @@ public class StaffServiceImpl implements StaffService { private CustomerStaffGridService customerStaffGridService; @Autowired private StaffOrgRelationService staffOrgRelationService; + @Resource + private CustomerStaffRedis customerStaffRedis; @Override public Result getStaffInfoForHome(StaffsInAgencyFromDTO fromDTO) { @@ -243,6 +249,7 @@ public class StaffServiceImpl implements StaffService { if (null != actInfoResult.getData() && actInfoResult.getData().size() > NumConstant.ZERO) { throw new RenException(EpmetErrorCode.EXIT_PUBLISHED_ACTIVITY.getCode()); } + //4.修改人员所属组织 CustomerStaffAgencyDTO staffAgency = new CustomerStaffAgencyDTO(); staffAgency.setId(staffAgencyDTO.getId()); @@ -283,6 +290,143 @@ public class StaffServiceImpl implements StaffService { //2021.6.7 添加逻辑-人员调动删除token sun end } + /** + * 工作人员调动 + * + * @param tokenDto + * @param fromDTO + * @return void + * @author zhaoqifeng + * @date 2020/8/27 16:13 + */ + @Override + public void staffTransferV2(TokenDto tokenDto, StaffTransferV2FormDTO fromDTO) { + if (tokenDto.getUserId().equals(fromDTO.getStaffId())) { + throw new RenException(EpmetErrorCode.CAN_NOT_SELF.getCode()); + } + //1.获取工作人员与机关关系 + CustomerStaffAgencyDTO staffAgencyDTO = customerStaffAgencyService.getInfoByUserId(fromDTO.getStaffId()); + String oldAgency = staffAgencyDTO.getAgencyId(); + //2.查询是否有未处理项目 + ProjectListFromDTO projectFromDTO = new ProjectListFromDTO(); + projectFromDTO.setCustomerId(staffAgencyDTO.getCustomerId()); + projectFromDTO.setUserId(fromDTO.getStaffId()); + projectFromDTO.setPageNo(1); + projectFromDTO.setPageSize(10); + Result> pendResult = govProjectOpenFeignClient.getPendProjectList(projectFromDTO); + if (!pendResult.success()) { + throw new RenException(pendResult.getCode(), pendResult.getMsg()); + } + if (null != pendResult.getData() && pendResult.getData().size() > NumConstant.ZERO) { + throw new RenException(EpmetErrorCode.EXIT_PEND_PROJECT.getCode()); + } + //3.查询是否有活动未结束 + Result> actInfoResult = epmetHeartOpenFeignClient.getPublishedAct(fromDTO.getStaffId()); + if (!actInfoResult.success()) { + throw new RenException(actInfoResult.getCode(), actInfoResult.getMsg()); + } + if (null != actInfoResult.getData() && actInfoResult.getData().size() > NumConstant.ZERO) { + throw new RenException(EpmetErrorCode.EXIT_PUBLISHED_ACTIVITY.getCode()); + } + //4.修改人员所属组织 + String agencyId = null; + String orgType = null; + String orgId = null; + if (OrgInfoConstant.AGENCY.equals(fromDTO.getOrgType())) { + agencyId = fromDTO.getOrgId(); + } else if (OrgInfoConstant.DEPT.equals(fromDTO.getOrgType())) { + orgType = fromDTO.getOrgType(); + orgId = fromDTO.getOrgId(); + CustomerDepartmentDTO departmentDTO = customerDepartmentService.get(orgId); + agencyId = departmentDTO.getAgencyId(); + } else { + orgType = fromDTO.getOrgType(); + orgId = fromDTO.getOrgId(); + CustomerGridDTO gridDTO = customerGridService.get(orgId); + agencyId = gridDTO.getPid(); + } + + CustomerStaffAgencyDTO staffAgency = new CustomerStaffAgencyDTO(); + staffAgency.setId(staffAgencyDTO.getId()); + staffAgency.setAgencyId(agencyId); + customerStaffAgencyService.update(staffAgency); + //原来组织总人数减一 + CustomerAgencyDTO oldAgencyDTO = customerAgencyService.get(oldAgency); + oldAgencyDTO.setTotalUser(oldAgencyDTO.getTotalUser() - NumConstant.ONE); + customerAgencyService.update(oldAgencyDTO); + //新组织总人数加一 + CustomerAgencyDTO newAgencyDTO = customerAgencyService.get(agencyId); + newAgencyDTO.setTotalUser(newAgencyDTO.getTotalUser() + NumConstant.ONE); + customerAgencyService.update(newAgencyDTO); + //逻辑删除工作人员原组织加入的部门、网格,部门、网格总人数减1 + customerDepartmentService.updateDepartment(fromDTO.getStaffId()); + customerGridService.updateGrid(fromDTO.getStaffId()); + if (OrgInfoConstant.DEPT.equals(orgType)) { + //添加新的部门关系 + CustomerStaffDepartmentDTO staffDepartmentDTO = new CustomerStaffDepartmentDTO(); + staffDepartmentDTO.setCustomerId(tokenDto.getCustomerId()); + staffDepartmentDTO.setDepartmentId(orgId); + staffDepartmentDTO.setUserId(fromDTO.getStaffId()); + customerStaffDepartmentService.save(staffDepartmentDTO); + //新部门总人数+1 + CustomerDepartmentDTO departmentDTO = customerDepartmentService.get(orgId); + departmentDTO.setTotalUser(departmentDTO.getTotalUser() + NumConstant.ONE); + departmentDTO.setUpdatedBy(null); + departmentDTO.setUpdatedTime(null); + customerDepartmentService.update(departmentDTO); + } + if (OrgInfoConstant.GRID.equals(orgType)) { + //添加新的网格关系 + CustomerStaffGridDTO staffGridDTO = new CustomerStaffGridDTO(); + staffGridDTO.setCustomerId(tokenDto.getCustomerId()); + staffGridDTO.setGridId(orgId); + staffGridDTO.setUserId(fromDTO.getStaffId()); + customerStaffGridService.save(staffGridDTO); + //新网格总人数+1 + CustomerGridDTO gridDTO = customerGridService.get(orgId); + gridDTO.setTotalUser(gridDTO.getTotalUser() + NumConstant.ONE); + gridDTO.setUpdatedBy(null); + gridDTO.setUpdatedTime(null); + customerGridService.update(gridDTO); + } + //6.更改工作人员组织角色 + StaffRoleDTO staffRoleDTO = new StaffRoleDTO(); + staffRoleDTO.setOrgId(agencyId); + staffRoleDTO.setStaffId(fromDTO.getStaffId()); + Result result = epmetUserOpenFeignClient.changeRoleOrg(staffRoleDTO); + if (!result.success()) { + throw new RenException(result.getCode(), result.getMsg()); + } + //7.操作记录表新增调动记录 + //获取工作人员注册组织关系 + StaffOrgRelationDTO staffOrgRelation = staffOrgRelationService.getByStaffId(fromDTO.getStaffId()); + StaffTransferRecordDTO staffTransferRecordDTO = new StaffTransferRecordDTO(); + staffTransferRecordDTO.setCustomerId(tokenDto.getCustomerId()); + staffTransferRecordDTO.setOperateStaffId(tokenDto.getUserId()); + staffTransferRecordDTO.setOperatedStaffId(fromDTO.getStaffId()); + staffTransferRecordDTO.setOldAgencyId(oldAgency); + if (!OrgInfoConstant.AGENCY.equals(staffOrgRelation.getOrgType())) { + staffTransferRecordDTO.setOldOrgType(staffOrgRelation.getOrgType()); + staffTransferRecordDTO.setOldOrgId(staffOrgRelation.getOrgId()); + } + staffTransferRecordDTO.setAgencyId(agencyId); + staffTransferRecordDTO.setOrgType(orgType); + staffTransferRecordDTO.setOrgId(orgId); + staffTransferRecordDTO.setRemarks(fromDTO.getRemarks()); + staffTransferRecordService.save(staffTransferRecordDTO); + //8.更改注册关系 + staffOrgRelation.setOrgId(fromDTO.getOrgId()); + staffOrgRelation.setOrgType(fromDTO.getOrgType()); + staffOrgRelation.setUpdatedBy(null); + staffOrgRelation.setUpdatedTime(null); + staffOrgRelationService.update(staffOrgRelation); + //9..清除可能存在的工作人员登陆token + String key = RedisKeys.getCpUserKey("gov", "wxmp", fromDTO.getStaffId()); + redisUtils.delete(key); + //10 清除工作人员缓存 + customerStaffRedis.delStaffInfoFormCache(tokenDto.getCustomerId(), fromDTO.getStaffId()); + } + /** * 根据staffId查询用户基本信息 * @author sun