Browse Source

知识图谱-版本接口联调

dev-cp
chenpeng 1 year ago
parent
commit
5b9b2860e6
11 changed files with 240 additions and 130 deletions
  1. +5
    -1
      ruoyi-modules/management-platform/pom.xml
  2. +31
    -15
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/kg/KgVersionController.java
  3. +37
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/CsvParser.java
  4. +23
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/CsvToMap.java
  5. +0
    -3
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/kg/dto/KgInfoIdDTO.java
  6. +21
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/kg/dto/KgVersionInsertDTO.java
  7. +6
    -1
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/KgVersionService.java
  8. +105
    -105
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/KgVersionServiceImpl.java
  9. +3
    -1
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/kg/FriendsWith.java
  10. +3
    -1
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/kg/Person.java
  11. +6
    -3
      ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/KnowledgeGraphVersionDao.xml

+ 5
- 1
ruoyi-modules/management-platform/pom.xml View File

@@ -183,7 +183,11 @@
<artifactId>opencsv</artifactId>
<version>5.7.1</version>
</dependency>

<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.9.0</version>
</dependency>
<dependency>
<groupId>io.fabric8</groupId>
<artifactId>kubernetes-client</artifactId>


+ 31
- 15
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/kg/KgVersionController.java View File

@@ -4,12 +4,13 @@ import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.poi.ExcelUtil;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.platform.domain.kg.KgInfo;
import com.ruoyi.platform.domain.kg.KnowledgeGraphVersion;
import com.ruoyi.platform.domain.kg.dto.KgInfoIdDTO;
import com.ruoyi.platform.domain.kg.dto.KgVersionInsertDTO;
import com.ruoyi.platform.service.KgVersionService;
import com.ruoyi.system.api.domain.SysDictData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

@@ -56,10 +57,9 @@ public class KgVersionController extends BaseController {
* 图谱版本导入
*
* @param file
* @param kgId
*/
@PostMapping("/upload")
public R<String> uploadCsv(@RequestParam("file") MultipartFile file,@RequestParam("kgId") String kgId) {
public R<String> uploadCsv(@RequestParam("file") MultipartFile file) {
if (file == null || file.isEmpty()) {
throw new IllegalArgumentException("文件不能为空");
}
@@ -67,41 +67,57 @@ public class KgVersionController extends BaseController {
if (!file.getOriginalFilename().endsWith(".csv")) {
throw new IllegalArgumentException("仅支持 CSV 文件");
}
kgVersionService.uploadCsv(file, kgId);
return R.ok("操作成功");

try {
return R.ok(kgVersionService.uploadCsv(file));
} catch (Exception e) {
e.printStackTrace();
return R.fail();
}
}

/**
* 图谱版本新增
*
* @param kgVersionInsertDTO
*/
@PostMapping
public R<String> insert(@RequestBody @Validated KgVersionInsertDTO kgVersionInsertDTO) {
kgVersionService.insert(kgVersionInsertDTO);
return R.ok();
}


/**
* 图谱版本全量更新
*
* @param id 版本id
* @param kgInfoIdDTO 版本id
*/
@PostMapping("/fullUpdate")
public R<String> fullUpdate(@RequestParam("id") Long id) {
kgVersionService.fullUpdate(id);
public R<String> fullUpdate(@RequestBody @Validated KgInfoIdDTO kgInfoIdDTO) {
kgVersionService.fullUpdate(kgInfoIdDTO.getId());
return R.ok("操作成功");
}

/**
* 图谱版本增量更新
*
* @param id
* @param kgInfoIdDTO
*/
@PostMapping("/incrementalUpdate")
public R<String> incrementalUpdate(@RequestParam("id") Long id) {
kgVersionService.incrementalUpdate(id);
public R<String> incrementalUpdate(@RequestBody @Validated KgInfoIdDTO kgInfoIdDTO) {
kgVersionService.incrementalUpdate(kgInfoIdDTO.getId());
return R.ok("操作成功");
}

/**
* 图谱版本回退
*
* @param versionId
* @param kgInfoIdDTO
*/
@PostMapping("/rollback")
public R<String> rollback(@RequestParam("id") Long versionId) {
kgVersionService.rollback(versionId);
public R<String> rollback(@RequestBody @Validated KgInfoIdDTO kgInfoIdDTO) {
kgVersionService.rollback(kgInfoIdDTO.getId());
return R.ok("操作成功");
}

@@ -112,7 +128,7 @@ public class KgVersionController extends BaseController {
*/
@DeleteMapping("/{versionId}")
public R<String> delete(@PathVariable Long versionId) {
kgVersionService.rollback(versionId);
kgVersionService.delete(versionId);
return R.ok("操作成功");
}
}

+ 37
- 0
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/CsvParser.java View File

@@ -0,0 +1,37 @@
package com.ruoyi.platform.domain;

import cn.hutool.core.collection.CollectionUtil;
import com.opencsv.CSVReader;
import com.opencsv.exceptions.CsvException;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class CsvParser {

public static List<Map<String, String>> parseCsvToMap(InputStream inputStream) throws IOException, CsvException {
try (CSVReader reader = new CSVReader(new InputStreamReader(inputStream))) {
List<String[]> rows = reader.readAll();
if (CollectionUtil.isEmpty(rows) || rows.size() <= 1) {
return new ArrayList<>();
}
String[] headers = rows.get(0); // 第一行为表头
List<String[]> data = rows.subList(1, rows.size()); // 剩余行为数据

return data.stream()
.map(row -> {
Map<String, String> map = new HashMap<>();
for (int i = 0; i < headers.length; i++) {
map.put(headers[i], row[i]);
}
return map;
}).collect(Collectors.toList());
}
}
}

+ 23
- 0
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/CsvToMap.java View File

@@ -0,0 +1,23 @@
package com.ruoyi.platform.domain;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class CsvToMap {

public static List<Map<String, String>> convertToMap(List<String[]> csvData) {
String[] headers = csvData.get(0); // 第一行为表头
List<String[]> rows = csvData.subList(1, csvData.size()); // 剩余行为数据

return rows.stream()
.map(row -> {
Map<String, String> map = new HashMap<>();
for (int i = 0; i < headers.length; i++) {
map.put(headers[i], row[i]);
}
return map;
}).collect(Collectors.toList());
}
}

+ 0
- 3
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/kg/dto/KgInfoIdDTO.java View File

@@ -16,18 +16,15 @@ public class KgInfoIdDTO {
/**
* 名字
*/
@NotNull
private String name;

/**
* 版本
*/
@NotNull
private String version;

/**
* 状态
*/
@NotNull
private String status;
}

+ 21
- 0
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/kg/dto/KgVersionInsertDTO.java View File

@@ -0,0 +1,21 @@
package com.ruoyi.platform.domain.kg.dto;

import lombok.Data;

import javax.validation.constraints.NotNull;

@Data
public class KgVersionInsertDTO {

/**
* 文件路径
*/
@NotNull
private String path;

/**
* kgId
*/
@NotNull
private String kgId;
}

+ 6
- 1
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/KgVersionService.java View File

@@ -3,6 +3,7 @@ package com.ruoyi.platform.service;
import com.ruoyi.platform.domain.kg.KnowledgeGraphVersion;
import com.ruoyi.platform.domain.kg.dto.KgInfoIdDTO;
import org.springframework.web.multipart.MultipartFile;
import com.ruoyi.platform.domain.kg.dto.KgVersionInsertDTO;

import java.util.List;

@@ -11,11 +12,15 @@ public interface KgVersionService {

List<KnowledgeGraphVersion> versionList(KgInfoIdDTO kgInfoIdDTO);

void uploadCsv(MultipartFile file,String kgId);
String uploadCsv(MultipartFile file) throws Exception;

void fullUpdate(Long id);

void incrementalUpdate(Long id);

void rollback(Long versionId);

void delete(Long versionId);

void insert(KgVersionInsertDTO kgVersionInsertDTO );
}

+ 105
- 105
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/KgVersionServiceImpl.java View File

@@ -1,36 +1,36 @@
package com.ruoyi.platform.service.impl;

import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.text.csv.CsvData;
import cn.hutool.core.text.csv.CsvReader;
import cn.hutool.core.text.csv.CsvUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONUtil;
import com.ruoyi.common.core.enums.KgStatus;
import com.ruoyi.common.core.enums.KgUpdateMethod;
import com.ruoyi.platform.domain.kg.KnowledgeGraphVersion;
import com.ruoyi.platform.domain.kg.dto.KgInfoIdDTO;
import com.ruoyi.platform.domain.kg.dto.KgVersionInsertDTO;
import com.ruoyi.platform.mapper.kg.KnowledgeGraphVersionDao;
import com.ruoyi.platform.service.KgVersionService;
import com.ruoyi.platform.service.MinioService;
import com.ruoyi.platform.service.kg.FriendsWith;
import com.ruoyi.platform.service.kg.Person;
import com.ruoyi.platform.service.kg.PersonRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.InputStreamResource;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.io.InputStream;
import java.util.*;
import java.util.zip.CRC32;

import com.ruoyi.platform.domain.CsvParser;

@Service
public class KgVersionServiceImpl implements KgVersionService {

@@ -40,6 +40,12 @@ public class KgVersionServiceImpl implements KgVersionService {
@Autowired
private PersonRepository personRepository;

@Autowired
private MinioService minioService;

@Value("${minio.bucketName}")
public String bucketName;

private static final Logger log = LoggerFactory.getLogger(KgVersionServiceImpl.class);

@Override
@@ -48,74 +54,42 @@ public class KgVersionServiceImpl implements KgVersionService {
}

@Override
public void uploadCsv(MultipartFile file, String kgId) {
try (InputStreamReader reader = new InputStreamReader(file.getInputStream())) {
// 创建 CsvReader
CsvReader csvReader = CsvUtil.getReader();
// 读取所有行
CsvData rows = csvReader.read(reader);
KnowledgeGraphVersion knowledgeGraphVersion = new KnowledgeGraphVersion();
knowledgeGraphVersion.setKgId(kgId);
knowledgeGraphVersion.setVersion(maxVersion(kgId));
knowledgeGraphVersion.setName(file.getOriginalFilename());
knowledgeGraphVersion.setTransactionId(IdUtil.simpleUUID());
knowledgeGraphVersion.setStatus(KgStatus.OFFLINE.getCode());
knowledgeGraphVersion.setContent(JSONUtil.toJsonStr(rows.getRows()));
knowledgeGraphVersion.setUpdateMethod(KgUpdateMethod.PENDING_UPDATE.getCode());
knowledgeGraphVersionDao.insert(knowledgeGraphVersion);
} catch (Exception e) {
log.error("e={}", e.getMessage());
}
public void insert(KgVersionInsertDTO kgVersionInsertDTO) {
String path = kgVersionInsertDTO.getPath();
String kgId = kgVersionInsertDTO.getKgId();
KnowledgeGraphVersion knowledgeGraphVersion = new KnowledgeGraphVersion();
knowledgeGraphVersion.setKgId(kgId);
knowledgeGraphVersion.setVersion(maxVersion(kgId));
knowledgeGraphVersion.setName(path.replaceAll(".*/([^/]+)$", "$1"));
knowledgeGraphVersion.setTransactionId(IdUtil.simpleUUID());
knowledgeGraphVersion.setStatus(KgStatus.OFFLINE.getCode());
knowledgeGraphVersion.setContent(path);
knowledgeGraphVersion.setUpdateMethod(KgUpdateMethod.PENDING_UPDATE.getCode());
knowledgeGraphVersionDao.insert(knowledgeGraphVersion);
}
@Override
public String uploadCsv(MultipartFile file) throws Exception {
String path = "/knowledge-graph/" + DateUtil.now() + "/" + file.getOriginalFilename();
minioService.uploadFile(bucketName, path, file);
return path;
}

@Override
@Transactional
public void fullUpdate(Long id) {
KnowledgeGraphVersion knowledgeGraphVersion = knowledgeGraphVersionDao.queryById(id);
String transactionId = knowledgeGraphVersion.getTransactionId();
Integer version = knowledgeGraphVersion.getVersion();
JSONArray neo4jContents = JSONUtil.parseArray(knowledgeGraphVersion.getContent());
if (CollectionUtil.isEmpty(neo4jContents)||neo4jContents.size()<=1){
return;
KnowledgeGraphVersion currentVersion = knowledgeGraphVersionDao.queryById(id);
String transactionId = currentVersion.getTransactionId();
Integer version = currentVersion.getVersion();
KnowledgeGraphVersion onlineVersion = knowledgeGraphVersionDao.onlineFind();
if (ObjectUtil.isNotNull(onlineVersion)) {
//旧版在线变离线
changeStatus(onlineVersion.getId(), KgStatus.OFFLINE.getCode(), null);
}
//去掉表头
neo4jContents.remove(0);
// 用于存储已解析的 Person 节点
Map<String, Person> personMap = new HashMap<>();
neo4jContents.forEach(item -> {
JSONArray lineData = JSONUtil.parseArray(item);
String name = String.valueOf(lineData.get(0));
String age = String.valueOf((lineData.get(1)));
String relationType = String.valueOf(lineData.get(2));
String relatedPerson = String.valueOf(lineData.get(3));
String since = lineData.get(4) != null ? String.valueOf(lineData.get(4)) : "0";

// 创建或获取 Person 节点
Person person = personMap.computeIfAbsent(name, k -> new Person(name, age, new ArrayList<>()));
person.setVersion(version);
person.setTransactionId(transactionId);

// 如果存在关系,则创建关系
if (relationType != null && relatedPerson != null) {
Person related = personMap.computeIfAbsent(relatedPerson, k -> new Person(relatedPerson, "0", new ArrayList<>()));
FriendsWith relation = new FriendsWith(related, since);
related.setTransactionId(transactionId);
related.setVersion(version);
relation.setTransactionId(transactionId);
relation.setVersion(version);
relation.setRelationType(relationType); // 动态设置关系类型
person.getRelations().add(relation);
}
// 保存 Person 节点
personRepository.save(person);
});

KnowledgeGraphVersion online = new KnowledgeGraphVersion();
online.setStatus(KgStatus.ONLINE.getCode());
online.setUpdateMethod(KgUpdateMethod.INCREMENTAL_UPDATE.getCode());
online.setId(id);
knowledgeGraphVersionDao.update(online);
//当前版本变在线
changeStatus(currentVersion.getId(), KgStatus.ONLINE.getCode(), KgUpdateMethod.FULL_UPDATE.getCode());
//解析表格数据保存到neo4j
saveToNeo4j(currentVersion.getContent(), version, transactionId);
}

@Override
@@ -123,12 +97,12 @@ public class KgVersionServiceImpl implements KgVersionService {
public void incrementalUpdate(Long id) {
//当前版本
KnowledgeGraphVersion currentVersion = knowledgeGraphVersionDao.queryById(id);
String transactionId = currentVersion.getTransactionId();
Integer version = currentVersion.getVersion();
String transactionId = currentVersion.getTransactionId();
// 找出在线的版本
KnowledgeGraphVersion onlineVersion = knowledgeGraphVersionDao.onlineFind();
if (ObjectUtil.isNotNull(onlineVersion)&&ObjectUtil.isNotEmpty(onlineVersion.getTransactionId())
&&ObjectUtil.isNotNull(onlineVersion.getVersion())) {
if (ObjectUtil.isNotNull(onlineVersion) && ObjectUtil.isNotEmpty(onlineVersion.getTransactionId())
&& ObjectUtil.isNotNull(onlineVersion.getVersion())) {
// 存在在线的版本,则取在线版本的version和transactionId
transactionId = onlineVersion.getTransactionId();
version = onlineVersion.getVersion();
@@ -138,9 +112,7 @@ public class KgVersionServiceImpl implements KgVersionService {
knowledgeGraphVersionDao.update(currentVersion);
}else {
//当前版本为在线版本
currentVersion.setUpdateMethod(KgUpdateMethod.INCREMENTAL_UPDATE.getCode());
currentVersion.setStatus(KgStatus.ONLINE.getCode());
knowledgeGraphVersionDao.update(currentVersion);
changeStatus(currentVersion.getId(), KgStatus.ONLINE.getCode(), KgUpdateMethod.INCREMENTAL_UPDATE.getCode());
}
//解析表格数据保存到neo4j
saveToNeo4j(currentVersion.getContent(), version, transactionId);
@@ -150,49 +122,76 @@ public class KgVersionServiceImpl implements KgVersionService {
@Transactional
public void rollback(Long versionId) {
//在线的版本置为离线
KnowledgeGraphVersion knowledgeGraphVersion = knowledgeGraphVersionDao.onlineFind();
knowledgeGraphVersion.setStatus(KgStatus.OFFLINE.getCode());
knowledgeGraphVersionDao.update(knowledgeGraphVersion);
KnowledgeGraphVersion onlineVersion = knowledgeGraphVersionDao.onlineFind();
changeStatus(onlineVersion.getId(), KgStatus.OFFLINE.getCode(),null);
//该版本置为在线
KnowledgeGraphVersion onlineVersion = new KnowledgeGraphVersion();
onlineVersion.setId(versionId);
onlineVersion.setStatus(KgStatus.ONLINE.getCode());
changeStatus(versionId,KgStatus.ONLINE.getCode(),null);
}

@Override
@Transactional
public void delete(Long versionId) {
knowledgeGraphVersionDao.deleteById(versionId);
}

/**
* 状态切换
*
* @param id
* @param status
* @param updateMethod
*/
private void changeStatus(Long id, Integer status, Integer updateMethod) {
KnowledgeGraphVersion knowledgeGraphVersion = new KnowledgeGraphVersion();
knowledgeGraphVersion.setId(id);
knowledgeGraphVersion.setStatus(status);
knowledgeGraphVersion.setUpdateMethod(updateMethod);
knowledgeGraphVersionDao.update(knowledgeGraphVersion);
}

/**
* 从minio中获取数据
*
* @param path
* @return
*/
private List<Map<String, String>> queryCsvDataFromMinio(String path) {
List<Map<String, String>> csvData;
try {
ResponseEntity<InputStreamResource> inputStreamResourceResponseEntity = minioService.downloadFile(bucketName, path);
InputStreamResource body = inputStreamResourceResponseEntity.getBody();
InputStream inputStream = body.getInputStream();
csvData = CsvParser.parseCsvToMap(inputStream);
} catch (Exception e) {
csvData = new ArrayList<>();
}
return csvData;
}

/**
* 解析表格数据保存到neo4j
*/
private void saveToNeo4j(String content,int version,String transactionId) {
JSONArray neo4jContents = JSONUtil.parseArray(content);
if (CollectionUtil.isEmpty(neo4jContents)||neo4jContents.size()<=1){
private void saveToNeo4j(String content, int version, String transactionId) {
List<Map<String, String>> csvData = queryCsvDataFromMinio(content);
if (CollectionUtil.isEmpty(csvData)) {
return;
}
//去掉表头
neo4jContents.remove(0);
Map<String, Person> personMap = new HashMap<>();
// 把当前内容合并到在线版本
neo4jContents.forEach(item -> {
JSONArray lineData = JSONUtil.parseArray(item);
String name = String.valueOf(lineData.get(0));
String age = String.valueOf((lineData.get(1)));
String relationType = String.valueOf(lineData.get(2));
String relatedPerson = String.valueOf(lineData.get(3));
String since = lineData.get(4) != null ? String.valueOf(lineData.get(4)) : "0";
csvData.forEach(item -> {
String name = item.get("name");
String age = item.get("age");
String relationType = item.get("relation_type");
String relatedPerson = item.get("friends_with");
String since = item.get("since");

// 创建或获取 Person 节点
Person person = personMap.computeIfAbsent(name, k -> new Person(name, age, new ArrayList<>()));
person.setVersion(version);
person.setTransactionId(transactionId);
Person person = personMap.computeIfAbsent(name, k -> new Person(name, age, new ArrayList<>(), version, transactionId));

// 如果存在关系,则创建关系
if (relationType != null && relatedPerson != null) {
Person related = personMap.computeIfAbsent(relatedPerson, k -> new Person(relatedPerson, "0", new ArrayList<>()));
FriendsWith relation = new FriendsWith(related, since);
related.setTransactionId(transactionId);
related.setVersion(version);
relation.setTransactionId(transactionId);
relation.setVersion(version);
Person related = personMap.computeIfAbsent(relatedPerson, k -> new Person(relatedPerson, "0", new ArrayList<>(), version, transactionId));
FriendsWith relation = new FriendsWith(related, since, version, transactionId);
relation.setRelationType(relationType); // 动态设置关系类型
person.getRelations().add(relation);
}
@@ -215,6 +214,7 @@ public class KgVersionServiceImpl implements KgVersionService {

/**
* 下一个升级的版本
*
* @param kgId
* @return
*/


+ 3
- 1
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/kg/FriendsWith.java View File

@@ -22,8 +22,10 @@ public class FriendsWith {
private Integer version;

// 构造函数、Getter 和 Setter
public FriendsWith(Person person, String since) {
public FriendsWith(Person person, String since,Integer version,String transactionId) {
this.person = person;
this.since = since;
this.version = version;
this.transactionId = transactionId;
}
}

+ 3
- 1
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/kg/Person.java View File

@@ -28,9 +28,11 @@ public class Person {
private List<FriendsWith> relations;

// 构造函数、Getter 和 Setter
public Person(String name, String age,List<FriendsWith> relations) {
public Person(String name, String age,List<FriendsWith> relations,Integer version,String transactionId) {
this.name = name;
this.age = age;
this.relations = relations;
this.version = version;
this.transactionId = transactionId;
}
}

+ 6
- 3
ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/KnowledgeGraphVersionDao.xml View File

@@ -86,6 +86,9 @@
<if test="status != null and status != ''">
and status = #{status}
</if>
<if test="id != null and id != ''">
and kg_id = #{id}
</if>
</where>
</select>

@@ -165,7 +168,7 @@
<update id="update">
update knowledge_graph_version
<set>
<if test="version != null and version != ''">
<if test="version != null">
version = #{version},
</if>
<if test="name != null and version != ''">
@@ -174,7 +177,7 @@
<if test="kgId != null">
kg_id = #{kgId},
</if>
<if test="status != null and status != ''">
<if test="status != null">
status = #{status},
</if>
<if test="updateMethod != null">
@@ -199,7 +202,7 @@
update_by = #{updateBy},
</if>
<if test="state != null">
state = #{state},
`state` = #{state},
</if>
</set>
where id = #{id}


Loading…
Cancel
Save