| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -21,6 +21,7 @@ import com.epmet.commons.tools.constant.NumConstant; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.commons.tools.exception.RenException; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.commons.tools.redis.RedisKeys; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.commons.tools.redis.RedisUtils; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.commons.tools.utils.ConvertUtils; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.constant.TagConstant; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.dto.form.CorrelationTagListFormDTO; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.dto.form.TagCascadeListFormDTO; | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -28,9 +29,7 @@ import com.epmet.dto.result.CorrelationTagListResultDTO; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.dto.result.TagInfoResultDTO; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.dto.result.TagRankResultDTO; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.dto.result.UpdateTagUseCountsResultDTO; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.fasterxml.jackson.databind.ObjectMapper; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import lombok.extern.slf4j.Slf4j; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import org.springframework.beans.BeanUtils; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import org.springframework.beans.factory.annotation.Autowired; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import org.springframework.dao.DataAccessException; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import org.springframework.data.redis.connection.RedisConnection; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -103,10 +102,7 @@ public class TagRedis { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            return resultList; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        //转换DTO
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        for (Object object : objects) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            resultList.add(objectToDTO(object,CorrelationTagListResultDTO.class)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//        resultList = JSONObject.parseArray(objects.toString(), CorrelationTagListResultDTO.class);
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        resultList = ConvertUtils.sourceToTarget(objects,CorrelationTagListResultDTO.class); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        //级联标签排序
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        //1.取出  zset  中的有序标签,根据级联标签,筛选有序标签
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        List<TagRankResultDTO> resultEquals = new ArrayList<>(); | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -117,7 +113,7 @@ public class TagRedis { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            Set<ZSetOperations.TypedTuple<Object>> typedTuples = redisUtils.zReverseRangeWithScores(customerKey, start, end); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            for (CorrelationTagListResultDTO correlationTagList : resultList) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                for (ZSetOperations.TypedTuple<Object> typedTuple : typedTuples) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    TagRankResultDTO tagRank = objectToDTO(typedTuple.getValue(), TagRankResultDTO.class); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    TagRankResultDTO tagRank = ConvertUtils.sourceToTarget(typedTuple.getValue(), TagRankResultDTO.class); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    tagRank.setScore(typedTuple.getScore()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    if (correlationTagList.getTagId().equals(tagRank.getTagId())){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        resultEquals.add(tagRank); | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -127,13 +123,7 @@ public class TagRedis { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        // 根据标签使用顺序倒叙
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        List<TagRankResultDTO> collect = resultEquals.stream().sorted(Comparator.comparing(TagRankResultDTO::getScore).reversed()).collect(Collectors.toList()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        List<CorrelationTagListResultDTO> realResult = new ArrayList<>(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        for (TagRankResultDTO tagRankResultDTO : collect) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            CorrelationTagListResultDTO correlation = new CorrelationTagListResultDTO(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            BeanUtils.copyProperties(tagRankResultDTO,correlation); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            realResult.add(correlation); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return realResult; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return ConvertUtils.sourceToTarget(collect, CorrelationTagListResultDTO.class); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -150,12 +140,7 @@ public class TagRedis { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        if (objects.size()== NumConstant.ZERO){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            return new ArrayList<>(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        List<TagInfoResultDTO> result = new ArrayList<TagInfoResultDTO>(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        for (Object object : objects) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            result.add(objectToDTO(object,TagInfoResultDTO.class)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//        List<TagInfoResultDTO> tagInfoResultDTOS = JSONObject.parseArray(objects.toString(), TagInfoResultDTO.class);
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return result; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return ConvertUtils.sourceToTarget(objects, TagInfoResultDTO.class); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    /** | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -171,11 +156,7 @@ public class TagRedis { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        if (objects.size()== NumConstant.ZERO){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            return new ArrayList<>(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        List<TagInfoResultDTO> result = new ArrayList<TagInfoResultDTO>(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        for (Object object : objects) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            result.add(objectToDTO(object,TagInfoResultDTO.class)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return result; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return ConvertUtils.sourceToTarget(objects, TagInfoResultDTO.class); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    /** | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -207,9 +188,7 @@ public class TagRedis { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            return resultList; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        //转换DTO
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        for (Object object : objects) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            resultList.add(objectToDTO(object, TagInfoResultDTO.class)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        resultList = ConvertUtils.sourceToTarget(objects,TagInfoResultDTO.class); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        //级联标签排序
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        //1.取出  zset  中的有序标签,根据级联标签,筛选有序标签
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        List<TagRankResultDTO> resultEquals = new ArrayList<>(); | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -221,7 +200,7 @@ public class TagRedis { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            Set<ZSetOperations.TypedTuple<Object>> typedTuples = redisUtils.zReverseRangeWithScores(gridTagKey, start, end); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            for (TagInfoResultDTO tagInfo : resultList) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                for (ZSetOperations.TypedTuple<Object> typedTuple : typedTuples) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    TagRankResultDTO tagRank = objectToDTO(typedTuple.getValue(), TagRankResultDTO.class); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    TagRankResultDTO tagRank = ConvertUtils.sourceToTarget(typedTuple.getValue(), TagRankResultDTO.class); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    tagRank.setScore(typedTuple.getScore()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    if (tagInfo.getTagId().equals(tagRank.getTagId())){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        resultEquals.add(tagRank); | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -231,25 +210,7 @@ public class TagRedis { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        // 根据标签使用顺序倒叙
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        List<TagRankResultDTO> collect = resultEquals.stream().sorted(Comparator.comparing(TagRankResultDTO::getScore).reversed()).collect(Collectors.toList()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        List<TagInfoResultDTO> tagInfoResultList = new ArrayList<>(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        for (TagRankResultDTO tagRankResultDTO : collect) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            TagInfoResultDTO tagInfoResult = new TagInfoResultDTO(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            BeanUtils.copyProperties(tagRankResultDTO,tagInfoResult); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            tagInfoResultList.add(tagInfoResult); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return tagInfoResultList; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    /** | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					     * @Description  Object 转换 DTO | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					     * @param o | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					     * @param tClass | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					     * @author zxc | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					     */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    public <T> T objectToDTO(Object o,Class<T> tClass){ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        ObjectMapper objectMapper = new ObjectMapper(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        T t = objectMapper.convertValue(o, tClass); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return t; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return ConvertUtils.sourceToTarget(collect, TagInfoResultDTO.class); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    /** | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |