Bläddra i källkod

档案AI题名

cr 1 månad sedan
förälder
incheckning
433a7646fe

+ 12 - 1
blade-common/src/main/java/org/springblade/common/utils/DeepSeekClient.java

@@ -110,7 +110,18 @@ public class DeepSeekClient {
         // 构造函数
         public DeepSeekRequest(String prompt, String model) {
             this.model = model;
-            this.messages = new Message[]{new Message("user", prompt)};
+
+            // 构造专家级对话上下文
+            this.messages = new Message[]{
+                    // 系统角色设定
+                    new Message("system", "你是有20年经验的建筑施工资料专家,熟悉GB/T50328、GB50202等规范。请用专业术语回答。"),
+
+                    // 用户问题
+                    new Message("user", "作为资料管理专家,请处理以下案卷题名:" + prompt)
+            };
+
+            this.temperature = 0.3;  // 降低随机性,提高专业性
+            this.max_tokens = 1000;
         }
 
         // Getters and Setters

+ 1 - 0
blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/vo/ArchiveAiNameVO1.java

@@ -5,6 +5,7 @@ import lombok.Data;
 @Data
 public class ArchiveAiNameVO1 {
     private Long id;
+    private Long archiveAutoId;
     private String archiveNameAi;
     private Integer status;
 }

+ 19 - 20
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchiveAiNameServiceImpl.java

@@ -16,7 +16,7 @@
  */
 package org.springblade.archive.service.impl;
 
-import com.alibaba.nacos.shaded.com.google.gson.Gson;
+
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.apache.commons.lang.StringUtils;
 import org.springblade.archive.entity.ArchiveAiName;
@@ -25,22 +25,16 @@ import org.springblade.archive.service.IArchiveAiNameService;
 import org.springblade.archive.vo.ArchiveAiNameVO;
 import org.springblade.archive.vo.ArchiveAiNameVO1;
 import org.springblade.common.utils.DeepSeekClient;
-import org.springblade.common.vo.DeepSeekResponse;
 import org.springblade.core.mp.base.BaseServiceImpl;
-import org.springblade.core.tool.utils.Func;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
-import java.io.IOException;
 import java.text.SimpleDateFormat;
-import java.time.format.DateTimeFormatter;
 import java.util.*;
-import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.Semaphore;
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.stream.Collectors;
@@ -79,17 +73,24 @@ public class ArchiveAiNameServiceImpl extends BaseServiceImpl<ArchiveAiNameMappe
 				apiSemaphore.acquire();
 				try {
 					String content = deepSeekClient.getSimplifiedContent(name.getArchiveName() + DEEPSEEK_ARCHIVE_NAME);
-					name.setArchiveNameAi(content);
-					name.setStatus(2);
+					if (content.startsWith("API_ERROR:") ||
+							content.startsWith("PARSE_ERROR:") ||
+							content.startsWith("IO_ERROR:")||content.startsWith("Error:")) {
+						name.setStatus(4);
+						name.setArchiveNameAi("获取失败");
+					} else {
+						name.setArchiveNameAi(content);
+						name.setStatus(2); // 标记为成功
+					}
 				} finally {
 					apiSemaphore.release();
 				}
 			} catch (InterruptedException e) {
 				Thread.currentThread().interrupt();
-				name.setStatus(2); // 设置失败状态
+				name.setStatus(4); // 设置失败状态
 				name.setArchiveNameAi("获取失败");
 			} catch (Exception e) {
-				name.setStatus(2); // 设置失败状态
+				name.setStatus(4); // 设置失败状态
 				name.setArchiveNameAi("获取失败");
 			}
 		});
@@ -128,16 +129,14 @@ public class ArchiveAiNameServiceImpl extends BaseServiceImpl<ArchiveAiNameMappe
 
 	@Transactional
 	public boolean confirmAiName(List<ArchiveAiNameVO1>vos) {
-		List<ArchiveAiName> archiveAiNameList = this.listByIds(vos.stream().map(o->o.getId()).collect(Collectors.toList()));
-		if(!archiveAiNameList.isEmpty()){
-			for (ArchiveAiNameVO1 archiveAiName : vos) {
-				if(archiveAiName.getStatus()==2&& StringUtils.isNotEmpty(archiveAiName.getArchiveNameAi())){
-					archiveAiName.setStatus(3);
-					String sql=" update u_archives_auto set name='"+archiveAiName.getArchiveNameAi()+"' where id="+archiveAiName.getId();
-					jdbcTemplate.update(sql);
-				}
+		for (ArchiveAiNameVO1 archiveAiName : vos) {
+			if(archiveAiName.getStatus()==2&& StringUtils.isNotEmpty(archiveAiName.getArchiveNameAi())){
+				archiveAiName.setStatus(3);
+				String sql=" update u_archives_auto set name='"+archiveAiName.getArchiveNameAi()+"' where id="+archiveAiName.getArchiveAutoId();
+				jdbcTemplate.update(sql);
+				String sql2="update u_archive_ai_name set status=3 where id="+archiveAiName.getId();
+				jdbcTemplate.update(sql2);
 			}
-		    return this.updateBatchById(archiveAiNameList);
 		}
 		return true;
 	}