|  | @@ -85,84 +85,50 @@ public class GroupServiceImpl implements IGroupService {
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    @Override
 | 
	
		
			
				|  |  | -    @Transactional
 | 
	
		
			
				|  |  | -    public boolean deleteByDeviceId(String deviceId, String groupId) {
 | 
	
		
			
				|  |  | -        Assert.notNull(deviceId, "编号不可为NULL");
 | 
	
		
			
				|  |  | -        Assert.notNull(groupId, "业务分组不可为NULL");
 | 
	
		
			
				|  |  | -        GbCode gbCode = GbCode.decode(deviceId);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        Group businessGroup = groupManager.queryBusinessGroup(groupId);
 | 
	
		
			
				|  |  | -        Assert.notNull(businessGroup, "业务分组不存在");
 | 
	
		
			
				|  |  | -        // 是否需要清理业务分组字段
 | 
	
		
			
				|  |  | -        if (gbCode.getTypeCode().equals("215")) {
 | 
	
		
			
				|  |  | -            // 删除业务分组
 | 
	
		
			
				|  |  | -            // 获取所有的虚拟组织
 | 
	
		
			
				|  |  | -            int result = groupManager.deleteByBusinessGroup(deviceId);
 | 
	
		
			
				|  |  | -            Assert.isTrue(result > 0, "分组不存在");
 | 
	
		
			
				|  |  | -            gbChannelService.removeParentIdByBusinessGroup(deviceId);
 | 
	
		
			
				|  |  | -        }else {
 | 
	
		
			
				|  |  | -            // 删除虚拟组织
 | 
	
		
			
				|  |  | -            Group group = groupManager.queryOneByDeviceId(deviceId, groupId);
 | 
	
		
			
				|  |  | -            Assert.notNull(group, "分组不存在");
 | 
	
		
			
				|  |  | -            // 获取所有子分组
 | 
	
		
			
				|  |  | -            List<Group> groupList = queryAllChildren(deviceId, groupId);
 | 
	
		
			
				|  |  | -            groupList.add(group);
 | 
	
		
			
				|  |  | -            int result = groupManager.batchDelete(groupList);
 | 
	
		
			
				|  |  | -            Assert.isTrue(result> 0, "删除分组失败");
 | 
	
		
			
				|  |  | -            gbChannelService.removeParentIdByGroupList(groupList);
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        return true;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    private List<Group> queryAllChildren(String deviceId, String groupId) {
 | 
	
		
			
				|  |  | -        List<Group> children = groupManager.getChildren(deviceId, groupId);
 | 
	
		
			
				|  |  | +    private List<Group> queryAllChildren(String deviceId, Integer platformId) {
 | 
	
		
			
				|  |  | +        List<Group> children = groupManager.getChildren(deviceId, platformId);
 | 
	
		
			
				|  |  |          if (ObjectUtils.isEmpty(children)) {
 | 
	
		
			
				|  |  |              return children;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          for (int i = 0; i < children.size(); i++) {
 | 
	
		
			
				|  |  | -            children.addAll(queryAllChildren(children.get(i).getDeviceId(), groupId));
 | 
	
		
			
				|  |  | +            children.addAll(queryAllChildren(children.get(i).getDeviceId(), platformId));
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return children;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  | +    @Transactional
 | 
	
		
			
				|  |  |      public void update(Group group) {
 | 
	
		
			
				|  |  |          Assert.isTrue(group.getId()> 0, "更新必须携带分组ID");
 | 
	
		
			
				|  |  |          Assert.notNull(group.getDeviceId(), "编号不可为NULL");
 | 
	
		
			
				|  |  |          Assert.notNull(group.getBusinessGroup(), "业务分组不可为NULL");
 | 
	
		
			
				|  |  |          Group groupInDb = groupManager.queryOne(group.getId());
 | 
	
		
			
				|  |  |          Assert.notNull(groupInDb, "分组不存在");
 | 
	
		
			
				|  |  | -        // 由于编号变化,会需要处理太多内容以及可能发送大量消息,所以目前更新只只支持重命名
 | 
	
		
			
				|  |  | -        groupInDb.setName(group.getName());
 | 
	
		
			
				|  |  | -        groupInDb.setUpdateTime(DateUtil.getNow());
 | 
	
		
			
				|  |  | -        groupManager.update(groupInDb);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        // 名称变化-- 直接通知上级分组本身变化
 | 
	
		
			
				|  |  | -        // 编号变化-- 通知:1.分组删除, 2.分组新增, 3.所有的所属通道parentId变化
 | 
	
		
			
				|  |  | -        // 本身是业务分组,如果编号变化,相当于重建,需要做大量通知
 | 
	
		
			
				|  |  | -        //
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        GbCode decode = GbCode.decode(group.getDeviceId());
 | 
	
		
			
				|  |  | -        if (decode.getTypeCode().equals("215")) {
 | 
	
		
			
				|  |  | -            // 业务分组变化。需要将其下的所有业务分组修改
 | 
	
		
			
				|  |  | -        }else {
 | 
	
		
			
				|  |  | -            // 虚拟组织修改,需要把其下的子节点修改父节点ID
 | 
	
		
			
				|  |  | +        group.setName(group.getName());
 | 
	
		
			
				|  |  | +        group.setUpdateTime(DateUtil.getNow());
 | 
	
		
			
				|  |  | +        groupManager.update(group);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 将变化信息发送通知
 | 
	
		
			
				|  |  | +        CommonGBChannel channel = CommonGBChannel.build(group);
 | 
	
		
			
				|  |  | +        try {
 | 
	
		
			
				|  |  | +            // 发送catalog
 | 
	
		
			
				|  |  | +            eventPublisher.catalogEventPublish(null, channel, CatalogEvent.UPDATE);
 | 
	
		
			
				|  |  | +        }catch (Exception e) {
 | 
	
		
			
				|  |  | +            log.warn("[业务分组/虚拟组织变化] 发送失败,{}", group.getDeviceId(), e);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        int update = groupManager.update(group);
 | 
	
		
			
				|  |  | -        if (update == 1) {
 | 
	
		
			
				|  |  | -            // TODO 查看此业务分组是否关联了国标设备,发送更新消息
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +        // 由于编号变化,会需要处理太多内容以及可能发送大量消息,所以目前更新只只支持重命名
 | 
	
		
			
				|  |  | +        GbCode decode = GbCode.decode(group.getDeviceId());
 | 
	
		
			
				|  |  | +        if (!groupInDb.getDeviceId().equals(group.getDeviceId())) {
 | 
	
		
			
				|  |  | +            if (decode.getTypeCode().equals("215")) {
 | 
	
		
			
				|  |  | +                // 业务分组变化。需要将其下的所有业务分组修改
 | 
	
		
			
				|  |  | +                gbChannelService.updateBusinessGroup(groupInDb.getDeviceId(), group.getDeviceId());
 | 
	
		
			
				|  |  | +            }else {
 | 
	
		
			
				|  |  | +                // 虚拟组织修改,需要把其下的子节点修改父节点ID
 | 
	
		
			
				|  |  | +                gbChannelService.updateParentIdGroup(groupInDb.getDeviceId(), group.getDeviceId());
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    @Override
 | 
	
		
			
				|  |  | -    public List<Group> getAllChild(String parentDeviceId) {
 | 
	
		
			
				|  |  | -        return Collections.emptyList();
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 |