|  |  | @ -2,20 +2,26 @@ package com.hnac.hzims.bigmodel.maintenance.service.impl; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | import cn.hutool.http.HttpRequest; |  |  |  | import cn.hutool.http.HttpRequest; | 
			
		
	
		
		
			
				
					
					|  |  |  | import cn.hutool.http.HttpResponse; |  |  |  | import cn.hutool.http.HttpResponse; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import com.alibaba.fastjson.JSON; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import com.alibaba.fastjson.JSONArray; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import com.alibaba.fastjson.JSONObject; | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |  |  |  | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import com.fasterxml.jackson.core.JsonProcessingException; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import com.fasterxml.jackson.databind.JsonNode; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import com.fasterxml.jackson.databind.ObjectMapper; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import com.hnac.hzims.bigmodel.database.service.WeaviateService; | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.hnac.hzims.bigmodel.maintenance.entity.VectorParamEntity; |  |  |  | import com.hnac.hzims.bigmodel.maintenance.entity.VectorParamEntity; | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.hnac.hzims.bigmodel.maintenance.mapper.VectorParamMapper; |  |  |  | import com.hnac.hzims.bigmodel.maintenance.mapper.VectorParamMapper; | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.hnac.hzims.bigmodel.maintenance.service.VectorParamService; |  |  |  | import com.hnac.hzims.bigmodel.maintenance.service.VectorParamService; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import com.hnac.hzims.bigmodel.maintenance.vo.VectorUrlResponse; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import lombok.AllArgsConstructor; | 
			
		
	
		
		
			
				
					
					|  |  |  | import lombok.extern.slf4j.Slf4j; |  |  |  | import lombok.extern.slf4j.Slf4j; | 
			
		
	
		
		
			
				
					
					|  |  |  | import org.springblade.core.tool.jackson.JsonUtil; |  |  |  | import org.springblade.core.tool.utils.CollectionUtil; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | import org.springframework.stereotype.Service; |  |  |  | import org.springframework.stereotype.Service; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | import javax.servlet.http.HttpServletResponse; |  |  |  | import javax.servlet.http.HttpServletResponse; | 
			
		
	
		
		
			
				
					
					|  |  |  | import java.nio.charset.StandardCharsets; |  |  |  | import java.nio.charset.StandardCharsets; | 
			
		
	
		
		
			
				
					
					|  |  |  | import java.util.ArrayList; |  |  |  | import java.util.*; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | import java.util.Base64; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | import java.util.List; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | import java.util.Map; |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | /** |  |  |  | /** | 
			
		
	
		
		
			
				
					
					|  |  |  |  * @Author: ypj |  |  |  |  * @Author: ypj | 
			
		
	
	
		
		
			
				
					|  |  | @ -23,37 +29,126 @@ import java.util.Map; | 
			
		
	
		
		
			
				
					
					|  |  |  |  */ |  |  |  |  */ | 
			
		
	
		
		
			
				
					
					|  |  |  | @Service |  |  |  | @Service | 
			
		
	
		
		
			
				
					
					|  |  |  | @Slf4j |  |  |  | @Slf4j | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | @AllArgsConstructor | 
			
		
	
		
		
			
				
					
					|  |  |  | public class VectorParamServiceImpl extends ServiceImpl<VectorParamMapper, VectorParamEntity> implements VectorParamService { |  |  |  | public class VectorParamServiceImpl extends ServiceImpl<VectorParamMapper, VectorParamEntity> implements VectorParamService { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     private static final String CLIENT_SIGN = "vector_param"; |  |  |  |     private static final String CLIENT_SIGN = "vector_param"; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     private final WeaviateService weaviateService; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     @Override |  |  |  |     @Override | 
			
		
	
		
		
			
				
					
					|  |  |  |     public String getAuthorization() { |  |  |  |     public String getAuthorization() { | 
			
		
	
		
		
			
				
					
					|  |  |  |         return "Basic " + Base64.getEncoder().encodeToString(CLIENT_SIGN.getBytes(StandardCharsets.UTF_8)); |  |  |  |         return "Basic " + Base64.getEncoder().encodeToString(CLIENT_SIGN.getBytes(StandardCharsets.UTF_8)); | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     @Override |  |  |  |     @Override | 
			
		
	
		
		
			
				
					
					|  |  |  |     public Map getUrlResponse(String url, String bladeToken, String hzinfoToken) { |  |  |  |     public VectorUrlResponse getUrlResponse(String url, String bladeToken, String hzinfoToken) { | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         HttpResponse response = HttpRequest.get(url) |  |  |  |         HttpResponse response = HttpRequest.get(url) | 
			
		
	
		
		
			
				
					
					|  |  |  |                 .header("Authorization", getAuthorization()) |  |  |  |                 .header("Authorization", getAuthorization()) | 
			
		
	
		
		
			
				
					
					|  |  |  |                 .header("Blade-Auth", bladeToken) |  |  |  |                 .header("Blade-Auth", bladeToken) | 
			
		
	
		
		
			
				
					
					|  |  |  |                 .header("Hzinfo-Auth", hzinfoToken).execute(); |  |  |  |                 .header("Hzinfo-Auth", hzinfoToken).execute(); | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (response.getStatus() == HttpServletResponse.SC_OK) { |  |  |  |         if (response.getStatus() == HttpServletResponse.SC_OK) { | 
			
		
	
		
		
			
				
					
					|  |  |  |             return JsonUtil.toMap(response.body()); |  |  |  |             String body = response.body(); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             log.info("getUrlResponse:" + body); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             JSONObject jsonObject = JSON.parseObject(body); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             VectorUrlResponse result = new VectorUrlResponse(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             result.setOriginalData(JSONArray.parseArray(jsonObject.getString("data")).toJavaList(JSONObject.class)); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //            try {
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //                ObjectMapper mapper = new ObjectMapper();
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //                JsonNode rootNode = mapper.readTree(body);
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //                if (rootNode.isArray()) {
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //                    return getUrlResponseByArray(rootNode);
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //                }
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //                JsonNode dataNode = rootNode.findValue("data");
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //                if (dataNode != null && dataNode.isArray()) {
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //                    return getUrlResponseByArray(dataNode);
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //                }
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //                if (dataNode != null) {
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //                    return getUrlResponseByObject(dataNode);
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //                }
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //                if (rootNode != null) {
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //                    return getUrlResponseByObject(rootNode);
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //                }
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //            } catch (JsonProcessingException e) {
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //                log.error("getUrlResponse error", e);
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //            }
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |         return null; |  |  |  |         return null; | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //    private VectorUrlResponse getUrlResponseByArray(JsonNode rootNode) throws JsonProcessingException {
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //        VectorUrlResponse result = new VectorUrlResponse();
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //        result.setOriginalData(rootNode);
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //        JsonNode item = rootNode.get(0);
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //        if (item != null) {
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //            List<String> keyList = new ArrayList<>();
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //            Iterator<String> iterator = item.fieldNames();
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //            while (iterator.hasNext()) {
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //                keyList.add(iterator.next());
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //            }
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //            result.setKeyList(keyList);
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //        }
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //        return result;
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //    }
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //    private VectorUrlResponse getUrlResponseByObject(JsonNode rootNode) throws JsonProcessingException {
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //        VectorUrlResponse result = new VectorUrlResponse();
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //        result.setOriginalData(rootNode);
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //        List<String> keyList = new ArrayList<>();
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //        Iterator<String> iterator = rootNode.fieldNames();
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //        while (iterator.hasNext()) {
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //            keyList.add(iterator.next());
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //        }
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //        result.setKeyList(keyList);
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //        return result;
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //    }
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     @Override |  |  |  |     @Override | 
			
		
	
		
		
			
				
					
					|  |  |  |     public List<String> getUrlResponseKeyList(String url, String bladeToken, String hzinfoToken) { |  |  |  |     public List<String> getUrlResponseKeyList(String url, String bladeToken, String hzinfoToken) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         List<String> result = new ArrayList<>(); |  |  |  |         VectorUrlResponse response = getUrlResponse(url, bladeToken, hzinfoToken); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         Map map = getUrlResponse(url, bladeToken, hzinfoToken); |  |  |  |         return response.getKeyList(); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         Map<String, Object> data = ((Map<String, Object>) map.get("data")); |  |  |  |     } | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         if (data != null) { |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             result.addAll(data.keySet()); |  |  |  |     @Override | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     public Boolean synchronization(String bladeToken, String hzinfoToken) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         List<VectorParamEntity> list = this.list(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         if (CollectionUtil.isEmpty(list)) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             return false; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         for (VectorParamEntity entity : list) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             VectorUrlResponse response = getUrlResponse(entity.getUrl(), bladeToken, hzinfoToken); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             if (response != null) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 ObjectMapper mapper = new ObjectMapper(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 JsonNode rootNode = null; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 try { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     rootNode = mapper.readTree(entity.getAttributeMap()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 } catch (JsonProcessingException e) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     e.printStackTrace(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 Map<String, String> attrMap = new HashMap<>(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 Iterator<String> iterator = rootNode.fieldNames(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 while (iterator.hasNext()) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     String key = iterator.next(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     attrMap.put(key, rootNode.findValue(key).textValue()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 List<Object> dataList = new ArrayList(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 JsonNode dataObject = (JsonNode) response.getOriginalData(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 if (dataObject.isArray()) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     Iterator<JsonNode> dataIterator = dataObject.iterator(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     while (dataIterator.hasNext()) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         dataList.add(toJsonObject(dataIterator.next())); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     } | 
			
		
	
		
		
			
				
					
					|  |  |  |                 } else { |  |  |  |                 } else { | 
			
		
	
		
		
			
				
					
					|  |  |  |             result.addAll(map.keySet()); |  |  |  |                     dataList.add(toJsonObject(dataObject)); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 weaviateService.saveBatch(response.getOriginalData(), entity.getTableName(), attrMap); | 
			
		
	
		
		
			
				
					
					|  |  |  |             } |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |         return result; |  |  |  |         } | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         return true; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     private JSONObject toJsonObject(JsonNode node) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         JSONObject jsonObject = JSON.parseObject(node.toString()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         return jsonObject; | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
	
		
		
			
				
					|  |  | 
 |