Commit 0738be4989c0c0631e29a40b9f520ea3d1305219

Authored by 陈星宇
1 parent f496bb1c

fix: 告警联系人回显组织为name

... ... @@ -3,6 +3,7 @@ package org.thingsboard.server.controller.yunteng;
3 3 import io.swagger.annotations.Api;
4 4 import io.swagger.annotations.ApiOperation;
5 5 import lombok.RequiredArgsConstructor;
  6 +import org.apache.commons.lang3.StringUtils;
6 7 import org.springframework.http.HttpStatus;
7 8 import org.springframework.http.ResponseEntity;
8 9 import org.springframework.validation.annotation.Validated;
... ... @@ -67,15 +68,16 @@ public class YtAlarmContactController extends BaseController {
67 68 @RequestParam(PAGE) int page,
68 69 @RequestParam(value = "username", required = false) String username,
69 70 @RequestParam(value = "organizationId", required = false) String organizationId,
70   - @RequestParam(value = CREATE_TIME, required = false) String createtime) {
  71 + @RequestParam(value = CREATE_TIME, required = false) String createtime) throws ThingsboardException {
71 72 HashMap<String, Object> queryMap = new HashMap<>();
72 73 queryMap.put(PAGE_SIZE, pageSize);
73 74 queryMap.put(PAGE, page);
74 75 queryMap.put("username",username);
75   - queryMap.put("organizationId",organizationId);
  76 + if(!StringUtils.isEmpty(organizationId)){
  77 + queryMap.put("organizationId", organizationId);
  78 + }
76 79 queryMap.put(CREATE_TIME, createtime);
77   -
78   - return alarmService.page(queryMap);
  80 + return alarmService.page(getCurrentUser().getCurrentTenantId(),queryMap);
79 81 }
80 82
81 83 @ApiOperation(value = "删除")
... ...
... ... @@ -46,5 +46,8 @@ public class AlarmContactDTO extends TenantDTO {
46 46 @ApiModelProperty(value = "添加人")
47 47 private String addPeople;
48 48
  49 + @ApiModelProperty(value="组织对象")
  50 + private OrganizationDTO organizationDTO;
  51 +
49 52
50 53 }
... ...
... ... @@ -7,15 +7,19 @@ import lombok.RequiredArgsConstructor;
7 7 import org.apache.commons.lang3.StringUtils;
8 8 import org.springframework.stereotype.Service;
9 9 import org.springframework.transaction.annotation.Transactional;
  10 +import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants;
10 11 import org.thingsboard.server.common.data.yunteng.core.exception.YtDataValidationException;
11 12 import org.thingsboard.server.common.data.yunteng.dto.AlarmContactDTO;
  13 +import org.thingsboard.server.common.data.yunteng.dto.OrganizationDTO;
12 14 import org.thingsboard.server.common.data.yunteng.utils.ReflectUtils;
13 15 import org.thingsboard.server.common.data.yunteng.utils.tools.YtPageData;
14 16 import org.thingsboard.server.dao.yunteng.entities.AlarmContact;
15 17 import org.thingsboard.server.dao.yunteng.mapper.AlarmContactMapper;
  18 +import org.thingsboard.server.dao.yunteng.mapper.OrganizationMapper;
16 19 import org.thingsboard.server.dao.yunteng.service.AbstractBaseService;
17 20 import org.thingsboard.server.dao.yunteng.service.YtAlarmContactService;
18 21
  22 +import java.util.ArrayList;
19 23 import java.util.List;
20 24 import java.util.Map;
21 25 import java.util.Set;
... ... @@ -28,6 +32,7 @@ public class YtAlarmContactServiceImpl extends AbstractBaseService<AlarmContactM
28 32 /** mapper注入 自带方法加入,继承的baseMapper */
29 33 private final AlarmContactMapper alarmContactMapper;
30 34
  35 + private final OrganizationMapper ytOrganizationMapper;
31 36 /**
32 37 * 查询全部的告警联系人
33 38 *
... ... @@ -121,29 +126,30 @@ public class YtAlarmContactServiceImpl extends AbstractBaseService<AlarmContactM
121 126 }
122 127 }
123 128
124   -
125   -
126 129 /**
127 130 * @param queryMap 查询集合
128 131 * @return PageData
129 132 */
130 133 @Override
131 134 @Transactional
132   - public YtPageData<AlarmContactDTO> page(Map<String, Object> queryMap) {
  135 + public YtPageData<AlarmContactDTO> page(String tenantId,Map<String, Object> queryMap) {
133 136 // 查询分页,加入条模糊条件查询
134   - IPage<AlarmContact> iPage =
135   - alarmContactMapper.selectPage(
136   - getPage(queryMap, "create_time", false),
137   - new QueryWrapper<AlarmContact>()
138   - .lambda()
139   - .like(
140   - StringUtils.isNoneBlank((String) queryMap.get("username")),
141   - AlarmContact::getUsername,
142   - queryMap.get("username"))
143   - .eq(
144   - StringUtils.isNoneBlank((String) queryMap.get("organizationId")),
145   - AlarmContact::getOrganizationId,
146   - queryMap.get("organizationId")));
147   - return getPageData(iPage, AlarmContactDTO.class);
  137 + queryMap.put("tenantId", tenantId);
  138 + String organizationId= (String) queryMap.get("organizationId");
  139 + //传入的组织id不为空
  140 + if (!StringUtils.isEmpty(organizationId)){
  141 + List<String> organizationIds= new ArrayList<>();
  142 + organizationIds.add(organizationId);
  143 + //查询该组织的所有子类
  144 + List<OrganizationDTO> organizationDTOS=ytOrganizationMapper.findOrganizationTreeList(tenantId,organizationIds);
  145 + List<String> queryOrganizationIds = new ArrayList<>();
  146 + organizationDTOS.forEach(item->{
  147 + queryOrganizationIds.add(item.getId());
  148 + });
  149 + queryMap.put("organizationIds",queryOrganizationIds);
  150 + }
  151 + IPage<AlarmContact> page= getPage(queryMap, FastIotConstants.DefaultOrder.CREATE_TIME,false);
  152 + IPage<AlarmContactDTO> pageDto= baseMapper.getAlarmPage(page,queryMap);
  153 + return getPageData(pageDto, AlarmContactDTO.class);
148 154 }
149 155 }
... ...
1 1 package org.thingsboard.server.dao.yunteng.mapper;
2 2
3 3 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  4 +import com.baomidou.mybatisplus.core.metadata.IPage;
4 5 import org.apache.ibatis.annotations.Mapper;
  6 +import org.apache.ibatis.annotations.Param;
  7 +import org.thingsboard.server.common.data.yunteng.dto.AlarmContactDTO;
5 8 import org.thingsboard.server.dao.yunteng.entities.AlarmContact;
6 9
  10 +import java.util.Map;
  11 +
7 12 /** @Description 告警联系人持久化数据层 @Author cxy @Date 2021/11/2 11:52 */
8 13 @Mapper
9   -public interface AlarmContactMapper extends BaseMapper<AlarmContact> {}
  14 +public interface AlarmContactMapper extends BaseMapper<AlarmContact> {
  15 +
  16 + IPage<AlarmContactDTO> getAlarmPage(
  17 + IPage<?> page, @Param("queryMap") Map<String, Object> queryMap);
  18 +
  19 +}
... ...
... ... @@ -53,6 +53,6 @@ public interface YtAlarmContactService {
53 53 * @param queryMap 查询集合
54 54 * @return PageData
55 55 */
56   - YtPageData<AlarmContactDTO> page(Map<String, Object> queryMap);
  56 + YtPageData<AlarmContactDTO> page(String tenantId,Map<String, Object> queryMap);
57 57
58 58 }
... ...
1 1 <?xml version="1.0" encoding="UTF-8"?>
2 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3 3
4   -<mapper namespace="com.codeez.mapper.AlarmContactMapper">
5   - <resultMap id="alarmContactMap" type="org.thingsboard.server.common.data.yunteng.dto.AlarmContactDTO" >
  4 +<mapper namespace="org.thingsboard.server.dao.yunteng.mapper.AlarmContactMapper">
  5 + <resultMap id="alarmContactMap" type="org.thingsboard.server.common.data.yunteng.dto.AlarmContactDTO">
6 6 <result property="id" column="id"/>
7 7 <result property="username" column="username"/>
8 8 <result property="organizationId" column="organization_id"/>
... ... @@ -15,7 +15,35 @@
15 15 <result property="updateTime" column="update_time"/>
16 16 <result property="createTime" column="create_time"/>
17 17 <result property="creator" column="creator"/>
18   -
  18 + <result property="tenantId" column="tenant_id"/>
  19 + <result property="updater" column="updater"/>
  20 + <association property="organizationDTO"
  21 + javaType="org.thingsboard.server.common.data.yunteng.dto.OrganizationDTO">
  22 + <result property="name" column="organization_name"/>
  23 + </association>
19 24 </resultMap>
20   -
  25 + <sql id="columns">
  26 + a.id,a.username,a.organization_id,a.phone,a.email,a.wechat,a.dingtalk,a.remark,a.add_people,a.update_time,
  27 + a.create_time,a.creator,a.tenant_id,a.updater,io.name AS organization_name
  28 + </sql>
  29 + <select id="getAlarmPage" resultMap="alarmContactMap">
  30 + SELECT
  31 + <include refid="columns"/>
  32 + FROM iotfs_alarm_contact a
  33 + LEFT JOIN iotfs_organization io ON io.id = a.organization_id
  34 + <where>
  35 + <if test="queryMap.tenantId !=null and queryMap.tenantId !=''">
  36 + AND a.tenant_id = #{queryMap.tenantId}
  37 + </if>
  38 + <if test="queryMap.name !=null and queryMap.name !=''">
  39 + AND a.username LIKE concat('%',#{queryMap.username}::TEXT,'%')
  40 + </if>
  41 + <if test="queryMap.organizationIds !=null">
  42 + AND a.organization_id IN
  43 + <foreach collection="queryMap.organizationIds" item="organizationId" open="(" separator="," close=")">
  44 + #{organizationId}
  45 + </foreach>
  46 + </if>
  47 + </where>
  48 + </select>
21 49 </mapper>
... ...