|
@@ -7,13 +7,19 @@ import com.ruoyi.common.core.controller.BaseController;
|
|
import com.ruoyi.common.core.domain.AjaxResult;
|
|
import com.ruoyi.common.core.domain.AjaxResult;
|
|
import com.ruoyi.common.core.page.TableDataInfo;
|
|
import com.ruoyi.common.core.page.TableDataInfo;
|
|
import com.ruoyi.common.enums.BusinessType;
|
|
import com.ruoyi.common.enums.BusinessType;
|
|
|
|
+import com.ruoyi.common.enums.ChatMessageRole;
|
|
import com.ruoyi.common.enums.FileType;
|
|
import com.ruoyi.common.enums.FileType;
|
|
|
|
+import com.ruoyi.common.utils.SecurityUtils;
|
|
import com.ruoyi.common.utils.StringUtils;
|
|
import com.ruoyi.common.utils.StringUtils;
|
|
import com.ruoyi.common.utils.file.FileUploadUtils;
|
|
import com.ruoyi.common.utils.file.FileUploadUtils;
|
|
import com.ruoyi.common.utils.file.FileUtils;
|
|
import com.ruoyi.common.utils.file.FileUtils;
|
|
import com.ruoyi.common.utils.moonshot.Client;
|
|
import com.ruoyi.common.utils.moonshot.Client;
|
|
|
|
+import com.ruoyi.common.utils.moonshot.vo.ChatCompletionMessage;
|
|
|
|
+import com.ruoyi.common.utils.moonshot.vo.ChatCompletionRequest;
|
|
|
|
+import com.ruoyi.common.utils.moonshot.vo.ChatCompletionStreamChoice;
|
|
import com.ruoyi.common.utils.moonshot.vo.FileUploadResult;
|
|
import com.ruoyi.common.utils.moonshot.vo.FileUploadResult;
|
|
import com.ruoyi.common.utils.poi.ExcelUtil;
|
|
import com.ruoyi.common.utils.poi.ExcelUtil;
|
|
|
|
+import com.ruoyi.common.utils.uuid.IdUtils;
|
|
import com.ruoyi.framework.config.ServerConfig;
|
|
import com.ruoyi.framework.config.ServerConfig;
|
|
import com.ruoyi.tool.domain.TUnifyFile;
|
|
import com.ruoyi.tool.domain.TUnifyFile;
|
|
import com.ruoyi.tool.service.ITUnifyFileService;
|
|
import com.ruoyi.tool.service.ITUnifyFileService;
|
|
@@ -32,6 +38,7 @@ import javax.servlet.http.HttpServletResponse;
|
|
import java.nio.file.Files;
|
|
import java.nio.file.Files;
|
|
import java.nio.file.Paths;
|
|
import java.nio.file.Paths;
|
|
import java.nio.file.StandardCopyOption;
|
|
import java.nio.file.StandardCopyOption;
|
|
|
|
+import java.util.Arrays;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -99,6 +106,7 @@ public class TUnifyFileController extends BaseController
|
|
@PostMapping
|
|
@PostMapping
|
|
public AjaxResult add(@RequestBody TUnifyFile tUnifyFile)
|
|
public AjaxResult add(@RequestBody TUnifyFile tUnifyFile)
|
|
{
|
|
{
|
|
|
|
+ tUnifyFile.setId(IdUtils.fastSimpleUUID());
|
|
tUnifyFile.setCreateBy(getNickName());
|
|
tUnifyFile.setCreateBy(getNickName());
|
|
return toAjax(tUnifyFileService.insertTUnifyFile(tUnifyFile));
|
|
return toAjax(tUnifyFileService.insertTUnifyFile(tUnifyFile));
|
|
}
|
|
}
|
|
@@ -126,7 +134,7 @@ public class TUnifyFileController extends BaseController
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 上传附件
|
|
|
|
|
|
+ * 简历附件上传附件
|
|
*/
|
|
*/
|
|
@ApiOperation("上传附件")
|
|
@ApiOperation("上传附件")
|
|
@Log(title = "附件", businessType = BusinessType.INSERT)
|
|
@Log(title = "附件", businessType = BusinessType.INSERT)
|
|
@@ -134,6 +142,10 @@ public class TUnifyFileController extends BaseController
|
|
public AjaxResult uploadFiles(List<MultipartFile> files)
|
|
public AjaxResult uploadFiles(List<MultipartFile> files)
|
|
{
|
|
{
|
|
AjaxResult ajax = AjaxResult.success();
|
|
AjaxResult ajax = AjaxResult.success();
|
|
|
|
+ String corpId = "";
|
|
|
|
+ if (StringUtils.isNotEmpty(SecurityUtils.getLoginUser().getCorpid())) {
|
|
|
|
+ corpId = SecurityUtils.getLoginUser().getCorpid();
|
|
|
|
+ }
|
|
try
|
|
try
|
|
{
|
|
{
|
|
// 上传文件路径
|
|
// 上传文件路径
|
|
@@ -154,30 +166,60 @@ public class TUnifyFileController extends BaseController
|
|
String fileName = FileUploadUtils.upload(filePath, file);
|
|
String fileName = FileUploadUtils.upload(filePath, file);
|
|
String url = serverConfig.getUrl() + fileName;
|
|
String url = serverConfig.getUrl() + fileName;
|
|
TUnifyFile tUnifyFile = new TUnifyFile();
|
|
TUnifyFile tUnifyFile = new TUnifyFile();
|
|
|
|
+ tUnifyFile.setId(IdUtils.fastSimpleUUID());
|
|
tUnifyFile.setUploadPath(url);
|
|
tUnifyFile.setUploadPath(url);
|
|
tUnifyFile.setUploadName(fileName);
|
|
tUnifyFile.setUploadName(fileName);
|
|
tUnifyFile.setNewUploadName(FileUtils.getName(fileName));
|
|
tUnifyFile.setNewUploadName(FileUtils.getName(fileName));
|
|
tUnifyFile.setUploadFormat(file.getOriginalFilename());
|
|
tUnifyFile.setUploadFormat(file.getOriginalFilename());
|
|
tUnifyFile.setUploadType(String.valueOf(FileType.RESUME.ordinal()));//简历附件
|
|
tUnifyFile.setUploadType(String.valueOf(FileType.RESUME.ordinal()));//简历附件
|
|
tUnifyFile.setCreateBy(getNickName());
|
|
tUnifyFile.setCreateBy(getNickName());
|
|
|
|
+ tUnifyFile.setCorpId(corpId);
|
|
|
|
|
|
//moonshot AI 附件上传返回附件信息
|
|
//moonshot AI 附件上传返回附件信息
|
|
if(null != resuat.getError()){
|
|
if(null != resuat.getError()){
|
|
tUnifyFile.setStatus_details(resuat.getError().getMessage());
|
|
tUnifyFile.setStatus_details(resuat.getError().getMessage());
|
|
}else if(resuat.getStatus().equals("ok")) {
|
|
}else if(resuat.getStatus().equals("ok")) {
|
|
tUnifyFile.copyFrom(resuat,true);
|
|
tUnifyFile.copyFrom(resuat,true);
|
|
-
|
|
|
|
/**
|
|
/**
|
|
* 根据moonshot获取附件解析内容
|
|
* 根据moonshot获取附件解析内容
|
|
*/
|
|
*/
|
|
if(StringUtils.isNotEmpty(tUnifyFile.getFileId())){
|
|
if(StringUtils.isNotEmpty(tUnifyFile.getFileId())){
|
|
tUnifyFile.setContent(MoonshotAiUtils.getFileContent(tUnifyFile.getFileId(),client.getApiKey()));
|
|
tUnifyFile.setContent(MoonshotAiUtils.getFileContent(tUnifyFile.getFileId(),client.getApiKey()));
|
|
}
|
|
}
|
|
-
|
|
|
|
}
|
|
}
|
|
-
|
|
|
|
tUnifyFileService.insertTUnifyFile(tUnifyFile);
|
|
tUnifyFileService.insertTUnifyFile(tUnifyFile);
|
|
|
|
|
|
|
|
+ // todo 开始简历解析
|
|
|
|
+ if(StringUtils.isNotEmpty(tUnifyFile.getContent())){
|
|
|
|
+
|
|
|
|
+ StringBuilder str = new StringBuilder();
|
|
|
|
+
|
|
|
|
+ client.ChatCompletionStream(new ChatCompletionRequest(tUnifyFile.getContent())).subscribe(
|
|
|
|
+ streamResponse -> {
|
|
|
|
+ if (streamResponse.getChoices().isEmpty()) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ for (ChatCompletionStreamChoice choice : streamResponse.getChoices()) {
|
|
|
|
+ String finishReason = choice.getFinishReason();
|
|
|
|
+ if (finishReason != null) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ // 将每个choice的delta内容添加到StringBuilder中
|
|
|
|
+ str.append(choice.getDelta().getContent());
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ error -> {
|
|
|
|
+ error.printStackTrace();
|
|
|
|
+ },
|
|
|
|
+ () -> {
|
|
|
|
+ System.out.println(str);
|
|
|
|
+ // todo 格式解析完成-存储简历内容整理并返回
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ );
|
|
|
|
+ }
|
|
|
|
+
|
|
//根据上传附件已经moonshot返回上传内容
|
|
//根据上传附件已经moonshot返回上传内容
|
|
ajax.put(tUnifyFile.getFileId(),tUnifyFile);
|
|
ajax.put(tUnifyFile.getFileId(),tUnifyFile);
|
|
}
|
|
}
|