Commit 983450486bc534c4e77019243ee2ff171c721bd9
1 parent
891e4b80
feat:1.数据流转增加组织字段以及过滤 2.任务中心增加组织字段以及过滤 3.组织更新时,同时更新用户与组织的绑定关系 4.系统通知普通租户管理员通知选择全部通知当前组织及以下及超级管理员
Showing
15 changed files
with
138 additions
and
71 deletions
... | ... | @@ -62,7 +62,6 @@ import org.thingsboard.server.common.data.yunteng.core.exception.TkDataValidatio |
62 | 62 | import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage; |
63 | 63 | import org.thingsboard.server.common.data.yunteng.dto.PublicCustomerDTO; |
64 | 64 | import org.thingsboard.server.common.data.yunteng.enums.ViewType; |
65 | -import org.thingsboard.server.common.data.yunteng.enums.TkScriptFunctionType; | |
66 | 65 | import org.thingsboard.server.dao.asset.AssetService; |
67 | 66 | import org.thingsboard.server.dao.attributes.AttributesService; |
68 | 67 | import org.thingsboard.server.dao.audit.AuditLogService; |
... | ... | @@ -89,7 +88,7 @@ import org.thingsboard.server.dao.tenant.TenantService; |
89 | 88 | import org.thingsboard.server.dao.user.UserService; |
90 | 89 | import org.thingsboard.server.dao.widget.WidgetTypeService; |
91 | 90 | import org.thingsboard.server.dao.widget.WidgetsBundleService; |
92 | -import org.thingsboard.server.dao.yunteng.service.TkOrganizationService; | |
91 | +import org.thingsboard.server.dao.yunteng.service.UserOrganizationMappingService; | |
93 | 92 | import org.thingsboard.server.exception.ThingsboardErrorResponseHandler; |
94 | 93 | import org.thingsboard.server.queue.discovery.PartitionService; |
95 | 94 | import org.thingsboard.server.queue.provider.TbQueueProducerProvider; |
... | ... | @@ -254,7 +253,7 @@ public abstract class BaseController { |
254 | 253 | |
255 | 254 | |
256 | 255 | @Autowired |
257 | - protected TkOrganizationService organizationService; | |
256 | + protected UserOrganizationMappingService userOrganizationMappingService; | |
258 | 257 | |
259 | 258 | @ExceptionHandler(ThingsboardException.class) |
260 | 259 | public void handleThingsboardException(ThingsboardException ex, HttpServletResponse response) { |
... | ... | @@ -1005,7 +1004,7 @@ public abstract class BaseController { |
1005 | 1004 | } |
1006 | 1005 | |
1007 | 1006 | protected List<String> commonTenantOrganizationAllIds() throws ThingsboardException { |
1008 | - return organizationService.currentUserOrganizationAllIds(getCurrentUser().getCurrentUserId()); | |
1007 | + return userOrganizationMappingService.getOrganizationIdsByUserId(getCurrentUser().getCurrentUserId()); | |
1009 | 1008 | } |
1010 | 1009 | |
1011 | 1010 | } | ... | ... |
... | ... | @@ -94,6 +94,9 @@ public class TkConvertDataToController extends BaseController { |
94 | 94 | if (orderType != null) { |
95 | 95 | queryMap.put(ORDER_TYPE, orderType.name()); |
96 | 96 | } |
97 | + if(getCurrentUser().isPtCommonTenant()){ | |
98 | + queryMap.put("orgIds",commonTenantOrganizationAllIds()); | |
99 | + } | |
97 | 100 | return convertConfigService.page(getCurrentUser().getCurrentTenantId(), queryMap); |
98 | 101 | } |
99 | 102 | ... | ... |
... | ... | @@ -85,7 +85,10 @@ public class TkNoticeController extends BaseController { |
85 | 85 | public ResponseEntity<SysNoticeDTO> save(@Validated(AddGroup.class) @RequestBody SysNoticeDTO sysNoticeDTO) throws ThingsboardException { |
86 | 86 | sysNoticeDTO.setStatus(FastIotConstants.DraftStatus.DRAFT); |
87 | 87 | SysNoticeDTO newSysNoticeDTO = |
88 | - sysNoticeService.save(sysNoticeDTO, getCurrentUser().getCurrentTenantId()); | |
88 | + sysNoticeService.save(sysNoticeDTO, | |
89 | + getCurrentUser().getCurrentTenantId(), | |
90 | + getCurrentUser().isPtCommonTenant(), | |
91 | + commonTenantOrganizationAllIds()); | |
89 | 92 | return newSysNoticeDTO == null ? ResponseEntity.badRequest().build() : ResponseEntity.ok().build(); |
90 | 93 | } |
91 | 94 | |
... | ... | @@ -97,7 +100,9 @@ public class TkNoticeController extends BaseController { |
97 | 100 | sysNoticeService.send( |
98 | 101 | sysNoticeDTO, |
99 | 102 | getCurrentUser().getCurrentTenantId(), |
100 | - getCurrentUser().getCurrentUserId()); | |
103 | + getCurrentUser().getCurrentUserId(), | |
104 | + getCurrentUser().isPtCommonTenant(), | |
105 | + commonTenantOrganizationAllIds()); | |
101 | 106 | return sysNoticeDto == null ? ResponseEntity.badRequest().build() : ResponseEntity.ok().build(); |
102 | 107 | } |
103 | 108 | } | ... | ... |
... | ... | @@ -37,6 +37,10 @@ public class ConvertConfigDTO extends TenantDTO { |
37 | 37 | @ApiModelProperty(value = "数据源内容") |
38 | 38 | private JsonNode datasourceContent; |
39 | 39 | |
40 | + @ApiModelProperty(value = "组织id") | |
41 | + @NotEmpty(message = "组织不能为空或者空字符串") | |
42 | + private String organizationId; | |
43 | + | |
40 | 44 | private transient Integer nodeType; |
41 | 45 | |
42 | 46 | private String remark; | ... | ... |
... | ... | @@ -67,7 +67,7 @@ public class SysNoticeServiceImpl extends AbstractBaseService<SysNoticeMapper, S |
67 | 67 | |
68 | 68 | @Override |
69 | 69 | @Transactional |
70 | - public SysNoticeDTO save(SysNoticeDTO sysNoticeDTO, String tenantId) { | |
70 | + public SysNoticeDTO save(SysNoticeDTO sysNoticeDTO, String tenantId,boolean isPtTenant, List<String> orgIds) { | |
71 | 71 | SysNoticeEntity sysNotice = sysNoticeDTO.getEntity(SysNoticeEntity.class); |
72 | 72 | // 设置为草稿 |
73 | 73 | sysNotice.setTenantId(tenantId); |
... | ... | @@ -77,18 +77,29 @@ public class SysNoticeServiceImpl extends AbstractBaseService<SysNoticeMapper, S |
77 | 77 | && StringUtils.isEmpty(sysNoticeDTO.getPointId()))) { |
78 | 78 | throw new EntityCreationException(ErrorMessage.SEND_DESTINATION_NOT_FOUND.getMessage()); |
79 | 79 | } |
80 | - List<String> userList; | |
80 | + List<String> userList = null; | |
81 | 81 | switch (sysNotice.getReceiverType()) { |
82 | 82 | case FastIotConstants.ReceiverType.ALL: |
83 | - // 获取全部用户ID | |
84 | - userList = | |
85 | - userMapper | |
86 | - .selectList( | |
87 | - new LambdaQueryWrapper<SysUserEntity>().eq(SysUserEntity::getTenantId, sysNotice.getTenantId())) | |
88 | - .stream() | |
89 | - .map(SysUserEntity::getId) | |
90 | - .distinct() | |
91 | - .collect(Collectors.toList()); | |
83 | + //普通租户选全部只给当前组织及以下发送 | |
84 | + if(isPtTenant){ | |
85 | + userList = | |
86 | + userOrganizationMappingService.getUserIdByOrganizationIds( | |
87 | + tenantId,null, orgIds.toArray(new String[0])); | |
88 | + SysUserEntity tenantAdmin = userMapper.selectOne( new LambdaQueryWrapper<SysUserEntity>().eq(SysUserEntity::getTenantId, sysNotice.getTenantId()) | |
89 | + .eq(SysUserEntity::getLevel,2)); | |
90 | + if(null!=tenantAdmin){ | |
91 | + userList.add(tenantAdmin.getId()); | |
92 | + } | |
93 | + }else {// 获取全部用户ID | |
94 | + userList = | |
95 | + userMapper | |
96 | + .selectList( | |
97 | + new LambdaQueryWrapper<SysUserEntity>().eq(SysUserEntity::getTenantId, sysNotice.getTenantId())) | |
98 | + .stream() | |
99 | + .map(SysUserEntity::getId) | |
100 | + .distinct() | |
101 | + .collect(Collectors.toList()); | |
102 | + } | |
92 | 103 | break; |
93 | 104 | case FastIotConstants.ReceiverType.ORGANIZATION: |
94 | 105 | // 判断传入的集合id是否为空 |
... | ... | @@ -129,10 +140,10 @@ public class SysNoticeServiceImpl extends AbstractBaseService<SysNoticeMapper, S |
129 | 140 | |
130 | 141 | @Override |
131 | 142 | @Transactional |
132 | - public SysNoticeDTO send(SysNoticeDTO sysNoticeDTO, String tenantId, String currentUserId) { | |
143 | + public SysNoticeDTO send(SysNoticeDTO sysNoticeDTO, String tenantId, String currentUserId,boolean isPtTenant, List<String> orgIds) { | |
133 | 144 | SysNoticeEntity sysNotice; |
134 | 145 | // 如果通知为空,则新增 |
135 | - sysNotice = save(sysNoticeDTO, tenantId).getEntity(SysNoticeEntity.class); | |
146 | + sysNotice = save(sysNoticeDTO, tenantId,isPtTenant,orgIds).getEntity(SysNoticeEntity.class); | |
136 | 147 | //获取当前发送者 |
137 | 148 | SysUserEntity user = userMapper.selectById(currentUserId); |
138 | 149 | if (null != user) { | ... | ... |
... | ... | @@ -60,6 +60,9 @@ public class TkConvertConfigServiceImpl |
60 | 60 | ConvertConfig::getStatus, |
61 | 61 | queryMap.get("status")) |
62 | 62 | .eq(ConvertConfig::getNodeType, queryMap.get("nodeType")) |
63 | + .in(null != queryMap.get("orgIds"), | |
64 | + ConvertConfig::getOrganizationId, | |
65 | + (List<String>)queryMap.get("orgIds")) | |
63 | 66 | .and( |
64 | 67 | null != startTime && null != endTime, |
65 | 68 | qr -> |
... | ... | @@ -68,7 +71,8 @@ public class TkConvertConfigServiceImpl |
68 | 71 | .like( |
69 | 72 | null != queryMap.get("name"), |
70 | 73 | ConvertConfig::getName, |
71 | - String.valueOf(queryMap.get("name")))); | |
74 | + String.valueOf(queryMap.get("name"))) | |
75 | + ); | |
72 | 76 | return getPageData(iPage, ConvertConfigDTO.class); |
73 | 77 | } |
74 | 78 | ... | ... |
... | ... | @@ -71,7 +71,7 @@ public class TkHomePageServiceImpl implements HomePageService { |
71 | 71 | |
72 | 72 | private final TkDeviceProfileService tkDeviceProfileService; |
73 | 73 | |
74 | - private final TkOrganizationService organizationService; | |
74 | + private final SysUserOrganizationMappingServiceImpl sysUserOrganizationMappingServiceImpl; | |
75 | 75 | |
76 | 76 | @Override |
77 | 77 | public HomePageLeftTopDTO getHomePageLeftTopInfo( |
... | ... | @@ -119,7 +119,7 @@ public class TkHomePageServiceImpl implements HomePageService { |
119 | 119 | long startTs = todayBegin.toInstant(ZoneOffset.of("+8")).toEpochMilli(); |
120 | 120 | if(isPtCommonTenant){ |
121 | 121 | //查询所有组织id |
122 | - orgIds = organizationService.currentUserOrganizationAllIds(currentUserId); | |
122 | + orgIds = sysUserOrganizationMappingServiceImpl.getOrganizationIdsByUserId(currentUserId); | |
123 | 123 | queryMap.put("organizationIds",orgIds); |
124 | 124 | alarmList = deviceMapper.findDeviceAlarmInfoByCustomer(startTs, null,orgIds); |
125 | 125 | //查询所有设备 | ... | ... |
... | ... | @@ -20,6 +20,7 @@ import org.thingsboard.server.dao.yunteng.entities.*; |
20 | 20 | import org.thingsboard.server.dao.yunteng.mapper.*; |
21 | 21 | import org.thingsboard.server.dao.yunteng.service.AbstractBaseService; |
22 | 22 | import org.thingsboard.server.dao.yunteng.service.TkOrganizationService; |
23 | +import org.thingsboard.server.dao.yunteng.service.UserOrganizationMappingService; | |
23 | 24 | |
24 | 25 | import java.util.*; |
25 | 26 | import java.util.stream.Collectors; |
... | ... | @@ -204,11 +205,81 @@ public class TkOrganizationServiceImpl extends AbstractBaseService<OrganizationM |
204 | 205 | (StringUtils.isNotEmpty(parentId)&&!parentId.equals(sourceParentOrganizationId))){//正常变化 |
205 | 206 | invalidateParentAndMeCacheByTenantIdAndId(tenantId,false,sourceParentOrganizationId,parentId); |
206 | 207 | } |
207 | - | |
208 | + //获取组织修改之前原上级与目标上级所绑定的用户 | |
209 | + List<Map<String,String>> userOrgList = getUserOrgMap(getUserByOrganizationIds(parentId),getUserByOrganizationIds(sourceParentOrganizationId)); | |
208 | 210 | baseMapper.updateById(organization); |
211 | + //组织修改过后更新原上级与目标上级用户绑定的组织 | |
212 | + for (Map<String,String> userOrg:userOrgList){ | |
213 | + String user = userOrg.get("userId"); | |
214 | + String org = userOrg.get("orgId"); | |
215 | + List<String>orgIds = organizationAllIds(tenantId, org); | |
216 | + addOrUpdateUserOrganizationMapping(user,orgIds); | |
217 | + } | |
209 | 218 | return organizationDTO; |
210 | 219 | } |
211 | 220 | |
221 | + public void addOrUpdateUserOrganizationMapping( | |
222 | + String userId, List<String> organizationIds) { | |
223 | + if (StringUtils.isEmpty(userId) || null == organizationIds || organizationIds.size() < 1) { | |
224 | + throw new TkDataValidationException(ErrorMessage.INVALID_PARAMETER.getMessage()); | |
225 | + } | |
226 | + // 先删除,再新增 | |
227 | + userOrganizationMappingMapper.delete( | |
228 | + new LambdaQueryWrapper<TkUserOrganizationMappingEntity>() | |
229 | + .eq(TkUserOrganizationMappingEntity::getUserId, userId)); | |
230 | + organizationIds.forEach( | |
231 | + organizationId -> { | |
232 | + TkUserOrganizationMappingEntity userOrganizationMapping = new TkUserOrganizationMappingEntity(); | |
233 | + userOrganizationMapping.setUserId(userId); | |
234 | + userOrganizationMapping.setOrganizationId(organizationId); | |
235 | + userOrganizationMappingMapper.insert(userOrganizationMapping); | |
236 | + }); | |
237 | + } | |
238 | + | |
239 | + List<Map<String,String>> getUserOrgMap(List<String>newUserIds ,List<String> oldUserIds){ | |
240 | + //目标上级原本绑定的用户 newUserIds | |
241 | + //原上级原本绑定的用户 oldUserIds | |
242 | + List<Map<String,String>> userOrgList = new ArrayList<>(); | |
243 | + for (String oldUserId:oldUserIds) { | |
244 | + Map<String,String> map = new HashMap<>(); | |
245 | + map.put("userId",oldUserId); | |
246 | + map.put("orgId", getOrganizationIdsByUser(oldUserId).get(0)); | |
247 | + userOrgList.add(map); | |
248 | + } | |
249 | + for (String newUserId:newUserIds) { | |
250 | + Map<String,String> map = new HashMap<>(); | |
251 | + map.put("userId",newUserId); | |
252 | + map.put("orgId", getOrganizationIdsByUser(newUserId).get(0)); | |
253 | + userOrgList.add(map); | |
254 | + } | |
255 | + return userOrgList; | |
256 | + } | |
257 | + // 获取当前组织的用户id集 | |
258 | + List<String> getUserByOrganizationIds(String ogrId){ | |
259 | + if (StringUtils.isEmpty(ogrId)) { | |
260 | + return null; | |
261 | + } | |
262 | + return userOrganizationMappingMapper | |
263 | + .selectList( | |
264 | + new QueryWrapper<TkUserOrganizationMappingEntity>() | |
265 | + .lambda() | |
266 | + .eq(TkUserOrganizationMappingEntity::getOrganizationId, ogrId)) | |
267 | + .stream() | |
268 | + .map(TkUserOrganizationMappingEntity::getUserId) | |
269 | + .collect(Collectors.toList()); | |
270 | + } | |
271 | + // 获取当前用户的组织id集 | |
272 | + List<String> getOrganizationIdsByUser(String userId){ | |
273 | + return userOrganizationMappingMapper | |
274 | + .selectList( | |
275 | + new QueryWrapper<TkUserOrganizationMappingEntity>() | |
276 | + .lambda() | |
277 | + .in(TkUserOrganizationMappingEntity::getUserId, userId)) | |
278 | + .stream() | |
279 | + .map(TkUserOrganizationMappingEntity::getOrganizationId) | |
280 | + .collect(Collectors.toList()); | |
281 | + } | |
282 | + | |
212 | 283 | @Override |
213 | 284 | public List<OrganizationDTO> getMyOrganizations( |
214 | 285 | boolean isPtSysAdmin, boolean isPtTenantAdmin,boolean isCustomer, boolean isPtCommonTenant, String tenantId, String currentUserId,String organizationId) { |
... | ... | @@ -218,10 +289,7 @@ public class TkOrganizationServiceImpl extends AbstractBaseService<OrganizationM |
218 | 289 | return findOrganizationTree(tenantId,organizationIds); |
219 | 290 | } else { |
220 | 291 | // 返回当前用户组织id集 |
221 | - Set<String> organizationIds =getUserOrganizationIds(currentUserId); | |
222 | - if(!StringUtils.isEmpty(organizationId)){ | |
223 | - organizationIds = new HashSet<>(List.of(organizationId)); | |
224 | - } | |
292 | + List<String> organizationIds =getOrganizationIdsByUser(currentUserId); | |
225 | 293 | if (organizationIds.size() > 0) { |
226 | 294 | return findOrganizationTree(tenantId, new ArrayList<>(organizationIds)); |
227 | 295 | } else { |
... | ... | @@ -231,17 +299,6 @@ public class TkOrganizationServiceImpl extends AbstractBaseService<OrganizationM |
231 | 299 | } |
232 | 300 | } |
233 | 301 | |
234 | - // 获取当前用户组织id集 | |
235 | - Set<String> getUserOrganizationIds(String currentUserId){ | |
236 | - return userOrganizationMappingMapper | |
237 | - .selectList( | |
238 | - new QueryWrapper<TkUserOrganizationMappingEntity>() | |
239 | - .lambda() | |
240 | - .in(TkUserOrganizationMappingEntity::getUserId, currentUserId)) | |
241 | - .stream() | |
242 | - .map(TkUserOrganizationMappingEntity::getOrganizationId) | |
243 | - .collect(Collectors.toSet()); | |
244 | - } | |
245 | 302 | |
246 | 303 | |
247 | 304 | |
... | ... | @@ -387,18 +444,6 @@ public class TkOrganizationServiceImpl extends AbstractBaseService<OrganizationM |
387 | 444 | }); |
388 | 445 | } |
389 | 446 | |
390 | - /** | |
391 | - * 当前用户多个组织结构下的所有组织ID | |
392 | - * | |
393 | - * @param currentUserId 当前用户id | |
394 | - */ | |
395 | - @Override | |
396 | - public List<String> currentUserOrganizationAllIds(String currentUserId) { | |
397 | - Set<String> organizationIds = getUserOrganizationIds(currentUserId); | |
398 | - List<String> clearOrgId = new ArrayList<>(); | |
399 | - organizationIds.forEach(item ->clearOrgId.add(item)); | |
400 | - return clearOrgId; | |
401 | - } | |
402 | 447 | |
403 | 448 | @Override |
404 | 449 | public List<OrganizationDTO> findOrganizationTreeList(String tenantId, OrganizationEnum sort, Collection<String> organizationIds) { | ... | ... |
... | ... | @@ -54,18 +54,6 @@ public class TkTaskCenterServiceImpl |
54 | 54 | IPage<TkTaskCenterEntity> page = |
55 | 55 | getPage(queryMap, FastIotConstants.DefaultOrder.CREATE_TIME, false); |
56 | 56 | IPage<TkTaskCenterDTO> iPage = baseMapper.getPageData(page, queryMap); |
57 | - List<String> orgIds = (List<String>) queryMap.get("orgIds"); | |
58 | - if(null!=orgIds&&!iPage.getRecords().isEmpty()){ | |
59 | - List<TkTaskCenterDTO> list = new ArrayList<>(); | |
60 | - iPage.getRecords().stream().forEach(dto->{ | |
61 | - orgIds.forEach(orgId-> { | |
62 | - if(dto.getExecuteTarget().getOrganizationId().equals(orgId)){ | |
63 | - list.add(dto); | |
64 | - } | |
65 | - }); | |
66 | - }); | |
67 | - iPage.setRecords(list); | |
68 | - } | |
69 | 57 | if (!iPage.getRecords().isEmpty()) { |
70 | 58 | iPage.setRecords( |
71 | 59 | iPage.getRecords().stream() | ... | ... |
... | ... | @@ -4,6 +4,7 @@ import org.thingsboard.server.common.data.yunteng.dto.SysNoticeDTO; |
4 | 4 | import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData; |
5 | 5 | import org.thingsboard.server.dao.yunteng.entities.SysNoticeEntity; |
6 | 6 | |
7 | +import java.util.List; | |
7 | 8 | import java.util.Map; |
8 | 9 | import java.util.Set; |
9 | 10 | |
... | ... | @@ -20,7 +21,7 @@ public interface SysNoticeService extends BaseService<SysNoticeEntity>{ |
20 | 21 | |
21 | 22 | boolean delete(Set<String> ids, String tenantId); |
22 | 23 | |
23 | - SysNoticeDTO save(SysNoticeDTO sysNoticeDTO,String tenantId); | |
24 | + SysNoticeDTO save(SysNoticeDTO sysNoticeDTO, String tenantId, boolean isPtTenant, List<String> orgIds); | |
24 | 25 | |
25 | - SysNoticeDTO send(SysNoticeDTO sysNoticeDTO,String tenantId,String currentUserId); | |
26 | + SysNoticeDTO send(SysNoticeDTO sysNoticeDTO,String tenantId,String currentUserId,boolean isPtTenant, List<String> orgIds); | |
26 | 27 | } | ... | ... |
... | ... | @@ -32,12 +32,6 @@ public interface TkOrganizationService extends BaseService<TkOrganizationEntity> |
32 | 32 | */ |
33 | 33 | List<String> organizationAllIds(String tenantId, String organizationId); |
34 | 34 | |
35 | - /** | |
36 | - * 组织结构下的所有组织ID | |
37 | - * | |
38 | - * @param currentUserId 当前用户id | |
39 | - */ | |
40 | - List<String> currentUserOrganizationAllIds(String currentUserId); | |
41 | 35 | |
42 | 36 | List<OrganizationDTO> findOrganizationTreeList(String tenantId, OrganizationEnum sort, Collection<String> organizationIds); |
43 | 37 | ... | ... |
... | ... | @@ -18,6 +18,7 @@ |
18 | 18 | <result property="updater" column="updater"/> |
19 | 19 | <result property="updateTime" column="update_time"/> |
20 | 20 | <result property="tenantId" column="tenant_id" /> |
21 | + <result property="organizationId" column="organization_id" /> | |
21 | 22 | <association property="tkDeviceTaskCenter" javaType="org.thingsboard.server.common.data.yunteng.dto.task.TkDeviceTaskCenterDTO"> |
22 | 23 | <result property="allowState" column="allow_state"/> |
23 | 24 | <result property="taskCenterId" column="task_center_id"/> |
... | ... | @@ -29,7 +30,7 @@ |
29 | 30 | |
30 | 31 | <sql id="basicColumns"> |
31 | 32 | tc.id,tc.name,tc.target_type,tc.execute_target,tc.execute_content,tc.execute_time,tc.create_time,tc.creator, |
32 | - tc.updater,tc.update_time,tc.tenant_id,tc.state | |
33 | + tc.updater,tc.update_time,tc.tenant_id,tc.state,tc.organization_id | |
33 | 34 | </sql> |
34 | 35 | <select id="getPageData" resultMap="dataMap"> |
35 | 36 | SELECT |
... | ... | @@ -54,6 +55,12 @@ |
54 | 55 | <if test="queryMap.tbDeviceId !=null and queryMap.tbDeviceId !=''"> |
55 | 56 | AND tdc.tb_device_id = #{queryMap.tbDeviceId} |
56 | 57 | </if> |
58 | + <if test="queryMap.orgIds !=null and queryMap.orgIds.size() > 0"> | |
59 | + AND organization_id IN | |
60 | + <foreach collection="queryMap.orgIds" item="organizationId" open="(" separator="," close=")"> | |
61 | + #{organizationId} | |
62 | + </foreach> | |
63 | + </if> | |
57 | 64 | </where> |
58 | 65 | </select> |
59 | 66 | </mapper> | ... | ... |