Browse Source

接口逻辑调整

dev_shibei_match
sunyuchao 4 years ago
parent
commit
34581f076f
  1. 9
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/CustomerStaffDao.java
  2. 6
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java
  3. 109
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/CustomerStaffDao.xml
  4. 3
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffRoleDao.xml
  5. 30
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerAgencyDao.xml

9
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/CustomerStaffDao.java

@ -25,6 +25,7 @@ import com.epmet.dataaggre.entity.epmetuser.CustomerStaffEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.LinkedList;
import java.util.List;
/**
@ -53,11 +54,17 @@ public interface CustomerStaffDao extends BaseDao<CustomerStaffEntity> {
*/
List<ListStaffResultDTO> selectByRealName(@Param("customerId") String customerId, @Param("realName") String realName);
/**
* @Description 分页查询排好序的工作人员Id列表
* @author sun
*/
LinkedList<String> selectOrderRole(OrgStaffListFormDTO formDTO);
/**
* @Description 分页查询工作人员基础信息角色信息组织人员单位领导角色人员在前部门人员部门领导角色人员在前网格人员网格长角色人员在前
* @author sun
*/
List<ListStaffResultDTO> selectStaffList(OrgStaffListFormDTO formDTO);
List<ListStaffResultDTO> selectStaffList(@Param("staffIds") LinkedList<String> staffIds);
/**
* @Description 查询工作人员基础信息

6
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java

@ -610,7 +610,10 @@ public class EpmetUserServiceImpl implements EpmetUserService {
//分别查询不能类型下人员信息、角色信息,按需求排序
int pageIndex = (formDTO.getPageNo() - NumConstant.ONE) * formDTO.getPageSize();
formDTO.setPageNo(pageIndex);
List<ListStaffResultDTO> resultList = customerStaffDao.selectStaffList(formDTO);
//1.分页查询排好序的工作人员Id列表【原本1/2步可以用一个sql,但涉及2需要按1的顺序排序,sql复杂且效率低,所以拆开】
LinkedList<String> staffIds = customerStaffDao.selectOrderRole(formDTO);
//2.批量查询工作人员信息,按传入顺序排序
List<ListStaffResultDTO> resultList = customerStaffDao.selectStaffList(staffIds);
return resultList;
}
@ -631,6 +634,7 @@ public class EpmetUserServiceImpl implements EpmetUserService {
//汇总数据
result = ConvertUtils.sourceToTarget(dto, StaffDetailV2FormDTO.class);
result.setName(dto.getRealName());
result.setGender(dto.getGender().toString());
result.setRoles(list);
return result;

109
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/CustomerStaffDao.xml

@ -51,6 +51,57 @@
AND real_name LIKE CONCAT('%', #{realName}, '%')
</select>
<select id="selectOrderRole" resultType="java.lang.String">
<!-- 按人员Id列表查询,先查询每个人有的角色,然后把有单位领导角色的人排在前边,其他的在按创建时间降序 -->
SELECT
t.staff_id
FROM (
<!-- 里边的sql,尽管有去重,一个人有多个角色时,在里边sql查询出来的是一个人两条数据,is_first一个是0一个是1,所以外层需要在按人分组 -->
SELECT DISTINCT<!-- 没有这个去重会改变最终的结果顺序,至于为什么还不清楚 -->
sr.staff_id,
case when gsr.role_key =
<choose>
<when test="orgType != null and orgType == 'agency' ">
'agency_leader'
</when>
<when test="orgType != null and orgType == 'dept' ">
'dept_leader'
</when>
<otherwise>
'grid_manager'
</otherwise>
</choose>
then 1 else 0 end is_first<!-- 有单位领导角色的人赋值为1,没有的赋值为0 -->
FROM staff_role sr
INNER JOIN gov_staff_role gsr ON sr.role_id = gsr.id AND gsr.customer_id = #{customerId}
WHERE
sr.del_flag = '0'
AND sr.staff_id IN
(
<foreach collection="staffIds" item="staffId" separator=",">
#{staffId}
</foreach>
)
ORDER BY
gsr.role_key <![CDATA[<>]]>
<choose>
<when test="orgType != null and orgType == 'agency' ">
'agency_leader'
</when>
<when test="orgType != null and orgType == 'dept' ">
'dept_leader'
</when>
<otherwise>
'grid_manager'
</otherwise>
</choose>
, sr.created_time DESC<!-- 标注有点位领导角色的人不参与排序也就是默认拍在前边 -->
) t
GROUP BY t.staff_id
ORDER BY t.is_first <![CDATA[<>]]> 1
LIMIT #{pageNo}, #{pageSize}
</select>
<select id="selectStaffList" resultMap="staffList">
SELECT
*
@ -58,55 +109,15 @@
customer_staff
WHERE
del_flag = '0'
AND user_id IN (
<!-- 按人员Id列表查询,先查询每个人有的角色,然后把有单位领导角色的人排在前边,其他的在按创建时间降序 -->
SELECT
t.staff_id
FROM (
<!-- 里边的sql,尽管有去重,一个人有多个角色时,在里边sql查询出来的是一个人两条数据,is_first一个是0一个是1,所以外层需要在按人分组 -->
SELECT DISTINCT<!-- 没有这个去重会改变最终的结果顺序,至于为什么还不清楚 -->
sr.staff_id,
case when gsr.role_key =
<choose>
<when test="orgType != null and orgType == 'agency' ">
'agency_leader'
</when>
<when test="orgType != null and orgType == 'dept' ">
'dept_leader'
</when>
<otherwise>
'grid_manager'
</otherwise>
</choose>
then 1 else 0 end is_first<!-- 有单位领导角色的人赋值为1,没有的赋值为0 -->
FROM staff_role sr
INNER JOIN gov_staff_role gsr ON sr.role_id = gsr.id AND gsr.customer_id = #{customerId}
WHERE
sr.del_flag = '0'
AND sr.staff_id IN
(
<foreach collection="staffIds" item="staffId" separator=",">
#{staffId}
</foreach>
)
ORDER BY
gsr.role_key <![CDATA[<>]]>
<choose>
<when test="orgType != null and orgType == 'agency' ">
'agency_leader'
</when>
<when test="orgType != null and orgType == 'dept' ">
'dept_leader'
</when>
<otherwise>
'grid_manager'
</otherwise>
</choose>
, sr.created_time DESC<!-- 标注有点位领导角色的人不参与排序也就是默认拍在前边 -->
) t
GROUP BY t.staff_id
ORDER BY t.is_first <![CDATA[<>]]> 1
LIMIT #{pageNo}, #{pageSize}
AND user_id IN
<foreach item="staffId" collection="staffIds" open="(" separator="," close=")">
#{staffId}
</foreach>
ORDER BY field(
user_id,
<foreach item="staffId" collection="staffIds" separator=",">
#{staffId}
</foreach>
)
</select>

3
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffRoleDao.xml

@ -53,7 +53,8 @@
staff_role sr
INNER JOIN gov_staff_role gsr ON sr.role_id = gsr.id
WHERE
sr.staff_id = #{staffId}
sr.del_flag = '0'
AND sr.staff_id = #{staffId}
ORDER BY
gsr.sort ASC
</select>

30
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerAgencyDao.xml

@ -83,7 +83,7 @@
WHERE
sor.org_type = 'agency'
<if test="staffIdList != null and staffIdList.size() > 0">
sor.staff_id IN (
AND sor.staff_id IN (
<foreach collection="staffIdList" item="staffId" separator=",">
#{staffId}
</foreach>
@ -93,14 +93,10 @@
SELECT
ca.ID agencyId,
sor.staff_id staffId,
IF(
ca.pid = '0',
cd.department_name,
CONCAT(
ca.organization_name,
'-',
cd.department_name
)
CONCAT(
ca.organization_name,
'-',
cd.department_name
)orgName,
sor.org_id orgId,
'dept' orgType
@ -111,7 +107,7 @@
WHERE
sor.org_type = 'dept'
<if test="staffIdList != null and staffIdList.size() > 0">
sor.staff_id IN (
AND sor.staff_id IN (
<foreach collection="staffIdList" item="staffId" separator=",">
#{staffId}
</foreach>
@ -121,14 +117,10 @@
SELECT
ca.ID agencyId,
sor.staff_id staffId,
IF(
ca.pid = '0',
cg.grid_name,
CONCAT(
ca.organization_name,
'-',
cg.grid_name
)
CONCAT(
ca.organization_name,
'-',
cg.grid_name
)orgName,
sor.org_id orgId,
'grid' orgType
@ -139,7 +131,7 @@
WHERE
sor.org_type = 'grid'
<if test="staffIdList != null and staffIdList.size() > 0">
sor.staff_id IN (
AND sor.staff_id IN (
<foreach collection="staffIdList" item="staffId" separator=",">
#{staffId}
</foreach>

Loading…
Cancel
Save