From 9d587d8a4281074c23cf9d37d5ee03e68cf5a068 Mon Sep 17 00:00:00 2001 From: wxz Date: Wed, 31 May 2023 17:05:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?=E8=A7=92=E8=89=B2=E5=8F=AF=E4=BB=A5=E5=88=97=E8=A1=A8+?= =?UTF-8?q?=E7=BB=84=E7=BB=87id=EF=BC=8C=E6=9F=A5=E8=AF=A2=E7=BB=84?= =?UTF-8?q?=E7=BB=87=E4=B8=8B=E6=89=80=E6=9C=89=E5=85=B7=E6=9C=89=E8=AF=A5?= =?UTF-8?q?=E8=A7=92=E8=89=B2=E7=9A=84=E5=B7=A5=E4=BD=9C=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=EF=BC=8C=E5=88=86=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form/StaffsByOrgAndRolesFormDTO.java | 24 ++++++++ .../result/StaffsByOrgAndRoleRstDTO.java | 23 ++++++++ .../controller/EpmetUserController.java | 19 ++++++ .../dao/epmetuser/CustomerStaffDao.java | 4 ++ .../dao/govorg/CustomerStaffAgencyDao.java | 3 + .../epmet/dataaggre/service/UserService.java | 10 ++++ .../service/epmetuser/EpmetUserService.java | 2 + .../epmetuser/impl/EpmetUserServiceImpl.java | 9 +++ .../service/govorg/GovOrgService.java | 2 + .../govorg/impl/GovOrgServiceImpl.java | 6 +- .../service/impl/UserServiceImpl.java | 59 +++++++++++++++++++ .../mapper/epmetuser/CustomerStaffDao.xml | 25 ++++++++ .../mapper/govorg/CustomerStaffAgencyDao.xml | 14 +++++ 13 files changed, 199 insertions(+), 1 deletion(-) create mode 100644 epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/StaffsByOrgAndRolesFormDTO.java create mode 100644 epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/StaffsByOrgAndRoleRstDTO.java create mode 100644 epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/UserService.java create mode 100644 epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/UserServiceImpl.java diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/StaffsByOrgAndRolesFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/StaffsByOrgAndRolesFormDTO.java new file mode 100644 index 0000000000..b1e0635f3e --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/StaffsByOrgAndRolesFormDTO.java @@ -0,0 +1,24 @@ +package com.epmet.dataaggre.dto.epmetuser.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.util.List; + +@Data +public class StaffsByOrgAndRolesFormDTO { + + @NotBlank(message = "组织ID为必填项") + private String orgId; + + /** + * agency,grid + */ + @NotBlank(message = "组织类型为必填项") + private String orgType; + private int pageNo = 1; + private int pageSize = 10; + + private List roleKeys; + +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/StaffsByOrgAndRoleRstDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/StaffsByOrgAndRoleRstDTO.java new file mode 100644 index 0000000000..c02f7340a2 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/StaffsByOrgAndRoleRstDTO.java @@ -0,0 +1,23 @@ +package com.epmet.dataaggre.dto.epmetuser.result; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Description 工作人员列表(按照角色和组织查询) + * @Author wangxianzhang + * @Time 2023/5/31 3:54 PM + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class StaffsByOrgAndRoleRstDTO { + + private String staffName; + + private String staffId; + + private String mobile; + +} diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetUserController.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetUserController.java index 2498606f80..694716c086 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetUserController.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetUserController.java @@ -4,6 +4,7 @@ import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.annotation.RequirePermission; import com.epmet.commons.tools.enums.RequirePermissionEnum; import com.epmet.commons.tools.exception.RenException; +import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.Result; @@ -12,6 +13,7 @@ import com.epmet.dataaggre.dto.epmetuser.form.*; import com.epmet.dataaggre.dto.epmetuser.result.*; import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO; import com.epmet.dataaggre.excel.StaffPatrollExcel; +import com.epmet.dataaggre.service.UserService; import com.epmet.dataaggre.service.datastats.DataStatsService; import com.epmet.dataaggre.service.epmetuser.EpmetUserService; import com.epmet.dto.form.DetailByTypeFormDTO; @@ -39,6 +41,8 @@ public class EpmetUserController { @Autowired private DataStatsService dataStatsService; + @Autowired + private UserService userService; /** * @Param formDTO @@ -299,4 +303,19 @@ public class EpmetUserController { return new Result().ok(epmetUserService.detailByType(formDTO,tokenDto)); } + /** + * @Description: 查询组织下,某个角色的工作人员列表 + * @Return com.epmet.commons.tools.utils.Result> + * @Author: wangxianzhang + * @Date: 2023/5/31 3:56 PM + */ + @GetMapping("listStaffByOrgAndRoles") + public Result> listStaffByOrgAndRole(@RequestBody StaffsByOrgAndRolesFormDTO form) { + + ValidatorUtils.validateEntity(form); + + PageData pd = userService.listStaffByOrgAndRole(form.getOrgId(), form.getOrgType(), form.getPageNo(), form.getPageSize(), form.getRoleKeys()); + return new Result>().ok(pd); + } + } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/CustomerStaffDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/CustomerStaffDao.java index 617c216415..567e2c85e5 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/CustomerStaffDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/CustomerStaffDao.java @@ -22,6 +22,7 @@ import com.epmet.dataaggre.beans.StaffInfoInGridOfRole; import com.epmet.dataaggre.dto.epmetuser.CustomerStaffDTO; import com.epmet.dataaggre.dto.epmetuser.result.ListStaffResultDTO; import com.epmet.dataaggre.dto.epmetuser.result.StaffSelectResDTO; +import com.epmet.dataaggre.dto.epmetuser.result.StaffsByOrgAndRoleRstDTO; import com.epmet.dataaggre.dto.govorg.form.OrgStaffListFormDTO; import com.epmet.dataaggre.entity.epmetuser.CustomerStaffEntity; import org.apache.ibatis.annotations.Mapper; @@ -111,4 +112,7 @@ public interface CustomerStaffDao extends BaseDao { * @Date: 2023/5/15 11:21 AM */ Integer countStaffQtyByStaffIdsAndRole(@Param("staffIds") Set staffIds, @Param("roleId") String roleId); + + // 给定的staffId种,具备某些角色的staffId列表 + List staffsInRolesFromGivenStaffIds(@Param("staffIds") List staffIds, @Param("roleKeys") List roleKeys); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerStaffAgencyDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerStaffAgencyDao.java index 96e44d2c3a..7edcc4b83c 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerStaffAgencyDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerStaffAgencyDao.java @@ -74,4 +74,7 @@ public interface CustomerStaffAgencyDao extends BaseDao getStaffList(@Param("orgId") String orgId, @Param("orgType") String orgType); + List listStaffIdsUnderAgency(@Param("customerId") String customerId, + @Param("orgIdPath") String orgIdPath, + @Param("agencyId") String agencyId); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/UserService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/UserService.java new file mode 100644 index 0000000000..d1060d5c52 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/UserService.java @@ -0,0 +1,10 @@ +package com.epmet.dataaggre.service; + +import com.epmet.commons.tools.page.PageData; +import com.epmet.dataaggre.dto.epmetuser.result.StaffsByOrgAndRoleRstDTO; + +import java.util.List; + +public interface UserService { + PageData listStaffByOrgAndRole(String orgId, String orgType, Integer pageNo, Integer pageSize, List roleKeys); +} diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java index c178cf0da8..fc77b822ef 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java @@ -275,4 +275,6 @@ public interface EpmetUserService { * @return */ PageData listIcResiUserByHouseId(Integer pageNo,Integer pageSize,List houseIds); + + PageData staffsInRolesFromGivenStaffIds(List staffIdsUnderAgency, List roleKeys, Integer pageNo, Integer pageSize); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java index 561b05302f..527ccea53c 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java @@ -1225,4 +1225,13 @@ public class EpmetUserServiceImpl implements EpmetUserService, ResultDataResolve pageInfo.setList(resultList); return new PageData<>(resultList, pageInfo.getTotal(),pageSize); } + + @Override + public PageData staffsInRolesFromGivenStaffIds(List staffIdsUnderAgency, List roleKeys, Integer pageNo, Integer pageSize) { + + PageHelper.startPage(pageNo, pageSize); + List sl = customerStaffDao.staffsInRolesFromGivenStaffIds(staffIdsUnderAgency, roleKeys); + + return new PageData<>(sl, new PageInfo<>(sl).getTotal()); + } } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java index c9fbed85c9..bc2ded3fff 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java @@ -319,4 +319,6 @@ public interface GovOrgService { * @return */ PageData lianHuResi(Integer pageNo, Integer pageSize, String partyCenterHouseId); + + List listStaffIdsUnderAgency(String orgIdPath, String agencyId); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java index d71e6e04ce..959daf9340 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java @@ -30,6 +30,7 @@ import com.epmet.commons.tools.redis.common.bean.CustomerStaffInfoCache; import com.epmet.commons.tools.redis.common.bean.GridInfoCache; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.EpmetRequestHolder; import com.epmet.commons.tools.utils.HttpClientManager; import com.epmet.commons.tools.utils.Result; import com.epmet.dataaggre.beans.LingShanAgentServiceStaffAndGrid; @@ -1613,5 +1614,8 @@ public class GovOrgServiceImpl implements GovOrgService { return new PageData<>(resList, resiPage.getTotal(),pageSize); } - + @Override + public List listStaffIdsUnderAgency(String orgIdPath, String agencyId) { + return customerStaffAgencyDao.listStaffIdsUnderAgency(EpmetRequestHolder.getLoginUserCustomerId(), orgIdPath, agencyId); + } } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/UserServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/UserServiceImpl.java new file mode 100644 index 0000000000..bd9937a0b6 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/UserServiceImpl.java @@ -0,0 +1,59 @@ +package com.epmet.dataaggre.service.impl; + +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.redis.common.CustomerOrgRedis; +import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache; +import com.epmet.commons.tools.utils.PidUtils; +import com.epmet.constant.OrgInfoConstant; +import com.epmet.dataaggre.dto.epmetuser.result.StaffsByOrgAndRoleRstDTO; +import com.epmet.dataaggre.service.UserService; +import com.epmet.dataaggre.service.epmetuser.EpmetUserService; +import com.epmet.dataaggre.service.govorg.GovOrgService; +import com.epmet.dto.result.LoginUserDetailsResultDTO; +import com.epmet.remote.EpmetUserRemoteService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class UserServiceImpl implements UserService { + + @Autowired + private GovOrgService govOrgService; + + @Autowired + private EpmetUserService epmetUserService; + + @Autowired + private EpmetUserRemoteService epmetUserRemoteService; + + @Override + public PageData listStaffByOrgAndRole(String orgId, String orgType, Integer pageNo, Integer pageSize, List roleKeys) { + String orgIdPath; + + if (StringUtils.isAnyBlank(orgType, orgType)) { + // 这俩有一个不传,就用当前用户所属的 + LoginUserDetailsResultDTO loginUserDetails = epmetUserRemoteService.getLoginUserDetails(); + orgIdPath = loginUserDetails.getOrgIdPath(); + orgId = loginUserDetails.getAgencyId(); + orgType = OrgInfoConstant.AGENCY; + } else { + // 取用户传递的 + if (OrgInfoConstant.AGENCY.equals(orgType)) { + // 行政组织 + AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(orgId); + orgIdPath = PidUtils.convertPid2OrgIdPath(agencyInfo.getId(), agencyInfo.getPids()); + } else { + return null; + } + } + + // 先通过org库查询出工作人员的id列表 + List staffIdsUnderAgency = govOrgService.listStaffIdsUnderAgency(orgIdPath, orgId); + + // 再通过这些id列表,去过滤角色,并且查出详细信息 + return epmetUserService.staffsInRolesFromGivenStaffIds(staffIdsUnderAgency, roleKeys, pageNo, pageSize); + } +} diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/CustomerStaffDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/CustomerStaffDao.xml index 69a89c0cfc..37fd22e0ae 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/CustomerStaffDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/CustomerStaffDao.xml @@ -213,4 +213,29 @@ and sr.ROLE_ID = #{roleId} + + + \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerStaffAgencyDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerStaffAgencyDao.xml index b39a38745d..9ed3082397 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerStaffAgencyDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerStaffAgencyDao.xml @@ -159,4 +159,18 @@ + + + +