Selaa lähdekoodia

文件大小,文件数量,字符总数,删除minio文件,图片。

S0025136190 6 kuukautta sitten
vanhempi
commit
2dc8b457c8

+ 11 - 0
takai-ai/src/main/java/com/takai/ai/domain/entity/TakaiMediaReplacement.java

@@ -34,6 +34,8 @@ public class TakaiMediaReplacement extends BaseEntity
     /** url */
     private String mediaUrl;
 
+    private String knowledgeId;
+
 
     public Long getId() {
         return id;
@@ -83,6 +85,14 @@ public class TakaiMediaReplacement extends BaseEntity
         this.mediaUrl = mediaUrl;
     }
 
+    public String getKnowledgeId() {
+        return knowledgeId;
+    }
+
+    public void setKnowledgeId(String knowledgeId) {
+        this.knowledgeId = knowledgeId;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
@@ -96,6 +106,7 @@ public class TakaiMediaReplacement extends BaseEntity
             .append("createTime", getCreateTime())
             .append("updateBy", getUpdateBy())
             .append("updateTime", getUpdateTime())
+            .append("knowledgeId", getKnowledgeId())
             .toString();
     }
 

+ 2 - 0
takai-ai/src/main/java/com/takai/ai/mapper/TakaiMediaReplacementMapper.java

@@ -45,4 +45,6 @@ public interface TakaiMediaReplacementMapper
      */
     public int updateMedia(TakaiMediaReplacement mData);
 
+    int deleteMedia(String documentId);
+
 }

+ 51 - 1
takai-ai/src/main/java/com/takai/ai/service/impl/TakaiAiServiceImpl.java

@@ -196,6 +196,9 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
                                         String key = symbolData.substring(startPos, endPos);
                                         String url = redisCache.getCacheObject(key);
                                         if (org.springframework.util.StringUtils.hasText(url)) {
+                                            if(url.contains("https://10.1.28.14:9000")){
+                                                url = url.replace("https://10.1.28.14:9000", "https://minio.jkec.info:9000");
+                                            }
                                             //匹配markdown图片格式
                                             symbolData = symbolData.replace(key, "![](" + url + ")");
                                         }
@@ -456,10 +459,33 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
                 Integer code = obj.getInteger("code");
                 if (code == 200) {
 //                    TakaiKnowledge info = takaiKnowledgeMapper.selectTargetKnowledge(TakaiKnowledge.builder().knowledgeId(knowledgeId).build());
+                    List<TakaiMediaReplacement>  list = takaiMediaReplacementMapper.selectMediaList(TakaiMediaReplacement.builder().knowledgeId(knowledgeId).build());
+                    List<TakaiDocument> documentList = takaiDocumentMapper.selectDocumentList(TakaiDocument.builder().knowledgeId(knowledgeId).build());
                     int knowledgeInt = takaiKnowledgeMapper.delKnowledge(knowledgeId);
                     if (knowledgeInt > 0) {
                         takaiDocumentMapper.delDocumentByKnowledgeId(knowledgeId);
                         takaiDocumentSettingsMapper.deleteDocumentSettingsByKnowledgeId(knowledgeId);
+
+                        if(list != null && list.size() > 0){
+
+                            try {
+                                for(TakaiDocument document: documentList){
+                                    logger.info("删除知识库->删除minio文件");
+                                    minioUtil.remove("deepseek-doc", "/"+document.getName());
+                                }
+
+                                for (int k = 0; k < list.size(); k++ ) {
+                                    logger.info("删除知识库->删除minio图片{}", k);
+                                    String key = "/pdf/"+knowledgeId+"/"+list.get(k).getDocumentId()+"/【示意图序号_"+list.get(k).getDocumentId()+"_"+k+1+"】.jpg";
+                                    logger.info("删除知识库->删除minio图片key{}", key);
+                                    minioUtil.remove("deepseek-doc" , key);
+                                }
+                            } catch (Exception e) {
+                                logger.error("删除知识库->删除minion文件失败", e.getMessage());
+                                throw new RuntimeException(e);
+                            }
+
+                        }
                     }
                     return knowledgeInt;
                 }
@@ -501,13 +527,14 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
                         // 更新知识库文件大小,总字符数, 文件总数
                         JSONObject docInfo = jsonObject.getJSONObject("doc_info");
                         if(docInfo != null){
+                            List<TakaiDocument> documentList = takaiDocumentMapper.selectDocumentList(TakaiDocument.builder().knowledgeId(knowledgeId).build());
                             Integer fileLen = docInfo.getInteger("file_size");
                             Integer wordNum = docInfo.getInteger("total_char_len");
                             Integer sliceTotal = docInfo.getInteger("slice_num");
                             TakaiKnowledge paramInfo = TakaiKnowledge.builder().knowledgeId(knowledgeId)
                                     .length(info.getLength() == null ? fileLen : info.getLength() + fileLen )       // 文件大小
                                     .wordNum(info.getWordNum() == null ? wordNum : info.getWordNum() + wordNum)      // 总字符数
-                                    .documentSize(info.getDocumentSize() == null ? sliceTotal : info.getDocumentSize() + sliceTotal) // 文件总数
+                                    .documentSize(documentList == null || documentList.size() == 0 ? 1 : documentList.size() + 1) // 文件总数
                                     .build();
                             takaiKnowledgeMapper.updateKnowledge(paramInfo);
 
@@ -588,7 +615,14 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
                     JSONObject obj = JSON.parseObject(body);
                     Integer code = obj.getInteger("code");
                     if (code == 200) {
+                        List<TakaiMediaReplacement> list = takaiMediaReplacementMapper.selectMediaList(TakaiMediaReplacement.builder().documentId(documentId).build());
+
+                        // 删除图片
+                        takaiMediaReplacementMapper.deleteMedia(documentId);
+
+                        // 删除document文件
                         int i = takaiDocumentMapper.delDocument(documentId);
+
                         if(i > 0){
                             TakaiKnowledge info  = takaiKnowledgeMapper.selectTargetKnowledge(TakaiKnowledge.builder().knowledgeId(vo.getKnowledgeId()).build());
                             if(info != null){
@@ -600,6 +634,22 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
                                         .build();
                                 takaiKnowledgeMapper.updateKnowledge(paramInfo);
                             }
+
+                            // 删除minio文件
+                            try {
+                                logger.info("删除minio文件");
+                                minioUtil.remove("deepseek-doc", "/"+vo.getName());
+                                if(list != null && list.size() > 0){
+                                    for (int k=1; k<=list.size(); k++ ) {
+                                        logger.info("删除minio图片{}", k);
+                                        minioUtil.remove("deepseek-doc" , "/pdf/"+vo.getKnowledgeId()+"/"+documentId+"/【示意图序号_"+documentId+"_"+k+"】.jpg");
+                                    }
+                                }
+                            } catch (Exception e) {
+                                logger.error("删除minion文件失败", e.getMessage());
+                                throw new RuntimeException(e);
+                            }
+                            return i;
                         }
                     }
                 }

+ 2 - 1
takai-ai/src/main/java/com/takai/ai/utils/MinioUtil.java

@@ -103,7 +103,8 @@ public class MinioUtil {
         // 生成唯一文件名
         String originalFilename = file.getOriginalFilename();
 //        String fileName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf("."));
-        String fileName = dateDir + "/" + originalFilename;
+//        String fileName = dateDir + "/" + originalFilename;
+        String fileName = originalFilename;
         // 上传文件
         try (InputStream inputStream = file.getInputStream()) {
             minioClient.putObject(

+ 7 - 0
takai-ai/src/main/resources/mapper/takaiai/TakaiMediaReplacementMapper.xml

@@ -29,6 +29,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		    <if test="documentId != null and documentId != ''">
 				AND document_id = #{documentId}
 			</if>
+			<if test="knowledgeId != null and knowledgeId != ''">
+				AND knowledge_id = #{knowledgeId}
+			</if>
 			<if test="mediaType != null and mediaType != ''">
 				AND media_type = #{mediaType}
 			</if>
@@ -79,5 +82,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		</set>
 		where id = #{id}
 	</update>
+
+	<delete id="deleteMedia" parameterType="String">
+		delete from bm_media_replacement where document_id = #{documentId}
+	</delete>
 	
 </mapper>