|
|
|
@ -2,20 +2,26 @@ package com.hnac.hzims.bigmodel.maintenance.service.impl;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.http.HttpRequest; |
|
|
|
|
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.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.mapper.VectorParamMapper; |
|
|
|
|
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 org.springblade.core.tool.jackson.JsonUtil; |
|
|
|
|
import org.springblade.core.tool.utils.CollectionUtil; |
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
|
|
import javax.servlet.http.HttpServletResponse; |
|
|
|
|
import java.nio.charset.StandardCharsets; |
|
|
|
|
import java.util.ArrayList; |
|
|
|
|
import java.util.Base64; |
|
|
|
|
import java.util.List; |
|
|
|
|
import java.util.Map; |
|
|
|
|
import java.util.*; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @Author: ypj |
|
|
|
@ -23,37 +29,126 @@ import java.util.Map;
|
|
|
|
|
*/ |
|
|
|
|
@Service |
|
|
|
|
@Slf4j |
|
|
|
|
@AllArgsConstructor |
|
|
|
|
public class VectorParamServiceImpl extends ServiceImpl<VectorParamMapper, VectorParamEntity> implements VectorParamService { |
|
|
|
|
|
|
|
|
|
private static final String CLIENT_SIGN = "vector_param"; |
|
|
|
|
|
|
|
|
|
private final WeaviateService weaviateService; |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public String getAuthorization() { |
|
|
|
|
return "Basic " + Base64.getEncoder().encodeToString(CLIENT_SIGN.getBytes(StandardCharsets.UTF_8)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Map getUrlResponse(String url, String bladeToken, String hzinfoToken) { |
|
|
|
|
public VectorUrlResponse getUrlResponse(String url, String bladeToken, String hzinfoToken) { |
|
|
|
|
HttpResponse response = HttpRequest.get(url) |
|
|
|
|
.header("Authorization", getAuthorization()) |
|
|
|
|
.header("Blade-Auth", bladeToken) |
|
|
|
|
.header("Hzinfo-Auth", hzinfoToken).execute(); |
|
|
|
|
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; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 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 |
|
|
|
|
public List<String> getUrlResponseKeyList(String url, String bladeToken, String hzinfoToken) { |
|
|
|
|
List<String> result = new ArrayList<>(); |
|
|
|
|
Map map = getUrlResponse(url, bladeToken, hzinfoToken); |
|
|
|
|
Map<String, Object> data = ((Map<String, Object>) map.get("data")); |
|
|
|
|
if (data != null) { |
|
|
|
|
result.addAll(data.keySet()); |
|
|
|
|
VectorUrlResponse response = getUrlResponse(url, bladeToken, hzinfoToken); |
|
|
|
|
return response.getKeyList(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@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 { |
|
|
|
|
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; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|