Commit 72d8ca68 authored by alex yao's avatar alex yao

feat:Ai软著

parent a549be6d
...@@ -351,36 +351,7 @@ public class AiDialoguesServiceImpl implements AiDialoguesService { ...@@ -351,36 +351,7 @@ public class AiDialoguesServiceImpl implements AiDialoguesService {
long inputTimeStamp = System.currentTimeMillis(); long inputTimeStamp = System.currentTimeMillis();
try { try {
if (dialoguesType.equals(AiDialoguesTypeEnum.CAR_INSURANCE.getType()) || dialoguesType.equals(AiDialoguesTypeEnum.CAR_RECOMMEND.getType())) {//AppBuilder if (dialoguesType.equals(AiDialoguesTypeEnum.CAR_INSURANCE.getType()) || dialoguesType.equals(AiDialoguesTypeEnum.CAR_RECOMMEND.getType())) {//AppBuilder
BizAiDialogues3rdRelationEntity bizAiDialogues3rdRelationEntity = new BizAiDialogues3rdRelationEntity(); appbuilder(dialoguesId, input, contentBuilder, sseUtil);
bizAiDialogues3rdRelationEntity.setDialoguesId(dialoguesId);
bizAiDialogues3rdRelationEntity.setPlatform(DialoguesPlatformEnum.AppBuilder.getPlatform());
bizAiDialogues3rdRelationEntity.setIsDeleted(CommonConstant.IsDeleted.N);
List<BizAiDialogues3rdRelationEntity> relationEntities = bizAiDialogues3rdRelationService.findByExample(bizAiDialogues3rdRelationEntity, null);
if (CollectionUtils.isEmpty(relationEntities)) {
throw new BusinessException("获取会话配置异常");
}
AppBuilderClientIterator iterator = appBuilderService.communication(relationEntities.get(0).getRelationId(), input, null, true);
while (iterator.hasNext()) {
AppBuilderClientResult res = iterator.next();
LargeModelDemandResult largeModelDemandResult = new LargeModelDemandResult();
largeModelDemandResult.setCode("0");
if (ArrayUtils.isNotEmpty(res.getEvents())) {
Event event = res.getEvents()[0];
String eventType = event.getEventType();
if ("chatflow".equals(eventType)) {
Map<String, Object> detail = event.getDetail();
if (detail.containsKey("message")) {
String mess = detail.get("message").toString();
largeModelDemandResult.setMessage(mess);
contentBuilder.append(mess);
}
}
} else if (StringUtils.isNotEmpty(res.getAnswer())) {
largeModelDemandResult.setMessage(res.getAnswer());
contentBuilder.append(res.getAnswer());
}
sseUtil.send(JsonUtils.serialize(largeModelDemandResult));
}
} }
} catch (Exception e) { } catch (Exception e) {
logger.error(e.getMessage()); logger.error(e.getMessage());
...@@ -414,4 +385,39 @@ public class AiDialoguesServiceImpl implements AiDialoguesService { ...@@ -414,4 +385,39 @@ public class AiDialoguesServiceImpl implements AiDialoguesService {
} }
return contentBuilder.toString(); return contentBuilder.toString();
} }
private void appbuilder(String dialoguesId, String input, StringBuilder contentBuilder, SSEUtil sseUtil)
throws Exception {
BizAiDialogues3rdRelationEntity bizAiDialogues3rdRelationEntity = new BizAiDialogues3rdRelationEntity();
bizAiDialogues3rdRelationEntity.setDialoguesId(dialoguesId);
bizAiDialogues3rdRelationEntity.setPlatform(DialoguesPlatformEnum.AppBuilder.getPlatform());
bizAiDialogues3rdRelationEntity.setIsDeleted(CommonConstant.IsDeleted.N);
List<BizAiDialogues3rdRelationEntity> relationEntities = bizAiDialogues3rdRelationService.findByExample(bizAiDialogues3rdRelationEntity, null);
if (CollectionUtils.isEmpty(relationEntities)) {
throw new BusinessException("获取会话配置异常");
}
AppBuilderClientIterator iterator = appBuilderService.communication(relationEntities.get(0).getRelationId(),
input, null, true);
while (iterator.hasNext()) {
AppBuilderClientResult res = iterator.next();
LargeModelDemandResult largeModelDemandResult = new LargeModelDemandResult();
largeModelDemandResult.setCode("0");
if (ArrayUtils.isNotEmpty(res.getEvents())) {
Event event = res.getEvents()[0];
String eventType = event.getEventType();
if ("chatflow".equals(eventType)) {
Map<String, Object> detail = event.getDetail();
if (detail.containsKey("message")) {
String mess = detail.get("message").toString();
largeModelDemandResult.setMessage(mess);
contentBuilder.append(mess);
}
}
} else if (StringUtils.isNotEmpty(res.getAnswer())) {
largeModelDemandResult.setMessage(res.getAnswer());
contentBuilder.append(res.getAnswer());
}
sseUtil.send(JsonUtils.serialize(largeModelDemandResult));
}
}
} }
...@@ -5,44 +5,44 @@ import java.util.List; ...@@ -5,44 +5,44 @@ import java.util.List;
/** /**
* @author alex.yao * @author alex.yao
* @date 2025/6/19
*/ */
public enum AiDialoguesTypeEnum { public enum AiDialoguesTypeEnum {
PORTAL("portal", "门户页对话"), PORTAL("portal", "门户页对话", DialoguesPlatformEnum.ModelLink),
LONG_TEXT_DOCUMENT("long_text_document", "长文本文档"), LONG_TEXT_DOCUMENT("long_text_document", "长文本文档", DialoguesPlatformEnum.ModelLink),
AI_WRITING("ai_writing", "AI写作"), AI_WRITING("ai_writing", "AI写作", DialoguesPlatformEnum.ModelLink),
AI_BI("ai_bi", "智能问数"), AI_BI("ai_bi", "智能问数", DialoguesPlatformEnum.ModelLink),
AI_FINANCE("ai_finance", "AI财务"), AI_FINANCE("ai_finance", "AI财务", DialoguesPlatformEnum.ModelLink),
LEGAL_AFFAIRS("legal_affairs", "法务问答"), LEGAL_AFFAIRS("legal_affairs", "法务问答", DialoguesPlatformEnum.ModelLink),
LEGAL_DOCUMENT_WRITING("legal_document_writing", "智写-法律文书写作"), LEGAL_DOCUMENT_WRITING("legal_document_writing", "智写-法律文书写作", DialoguesPlatformEnum.ModelLink),
AI_LEGAL_DOCUMENT_WRITING("ai_legal_document_writing", "智写-法律文书ai写作"), AI_LEGAL_DOCUMENT_WRITING("ai_legal_document_writing", "智写-法律文书ai写作", DialoguesPlatformEnum.ModelLink),
TEMPLATE_LEGAL_DOCUMENT_WRITING("template_legal_document_writing", "智写-法律文书模板写作"), TEMPLATE_LEGAL_DOCUMENT_WRITING("template_legal_document_writing", "智写-法律文书模板写作",
DialoguesPlatformEnum.ModelLink),
TRAVEL_BUSINESS("travel_business", "旅游业务"), TRAVEL_BUSINESS("travel_business", "旅游业务", DialoguesPlatformEnum.ModelLink),
MEETING_ASSISTANT("meeting_assistant", "会议助手"), MEETING_ASSISTANT("meeting_assistant", "会议助手", DialoguesPlatformEnum.ModelLink),
LEGISLATIVE_DOCUMENT_WRITING("legislative_document_writing", "立案调查"), LEGISLATIVE_DOCUMENT_WRITING("legislative_document_writing", "立案调查", DialoguesPlatformEnum.ModelLink),
CAR_INSURANCE("car_insurance", "车辆保险"), CAR_INSURANCE("car_insurance", "车辆保险", DialoguesPlatformEnum.AppBuilder),
CAR_RECOMMEND("car_recommend", "车辆推荐"), CAR_RECOMMEND("car_recommend", "车辆推荐", DialoguesPlatformEnum.AppBuilder),
DATA_AUDIT("data_audit", "数据校验"), DATA_AUDIT("data_audit", "数据校验", DialoguesPlatformEnum.ModelLink),
AI_SOFTWARE_COPYRIGHT("ai_software_copyright", "AI软著"), AI_SOFTWARE_COPYRIGHT("ai_software_copyright", "AI软著", DialoguesPlatformEnum.Dify),
; ;
...@@ -50,9 +50,13 @@ public enum AiDialoguesTypeEnum { ...@@ -50,9 +50,13 @@ public enum AiDialoguesTypeEnum {
private final String desc; private final String desc;
AiDialoguesTypeEnum(String type, String desc) { private final DialoguesPlatformEnum platform;
// DialoguesPlatformEnum.ModelLink: modellink DialoguesPlatformEnum.AppBuilder: appbuilder DialoguesPlatformEnum.Dify: dify
AiDialoguesTypeEnum(String type, String desc, DialoguesPlatformEnum platform) {
this.type = type; this.type = type;
this.desc = desc; this.desc = desc;
this.platform = platform;
} }
public String getType() { public String getType() {
...@@ -63,6 +67,9 @@ public enum AiDialoguesTypeEnum { ...@@ -63,6 +67,9 @@ public enum AiDialoguesTypeEnum {
return desc; return desc;
} }
public DialoguesPlatformEnum getPlatform() {
return platform;
}
public static AiDialoguesTypeEnum getByType(String type) { public static AiDialoguesTypeEnum getByType(String type) {
for (AiDialoguesTypeEnum aiDialoguesTypeEnum : AiDialoguesTypeEnum.values()) { for (AiDialoguesTypeEnum aiDialoguesTypeEnum : AiDialoguesTypeEnum.values()) {
......
...@@ -8,9 +8,8 @@ import cn.com.gsst.dify_client.exception.DifyApiException; ...@@ -8,9 +8,8 @@ import cn.com.gsst.dify_client.exception.DifyApiException;
import cn.com.poc.ai_software_copyright.contant.AiSoftWareCopyRightEnum; import cn.com.poc.ai_software_copyright.contant.AiSoftWareCopyRightEnum;
import cn.com.poc.ai_software_copyright.domian.BaseInfo; import cn.com.poc.ai_software_copyright.domian.BaseInfo;
import cn.com.poc.ai_software_copyright.domian.TechnicalContent; import cn.com.poc.ai_software_copyright.domian.TechnicalContent;
import cn.com.poc.ai_software_copyright.dto.SoftwareCopyRightFilesDto;
import cn.com.poc.ai_software_copyright.entity.BizSoftwareCopyrightDocRecordEntity; import cn.com.poc.ai_software_copyright.entity.BizSoftwareCopyrightDocRecordEntity;
import org.springframework.web.bind.annotation.RequestParam; import cn.com.poc.ai_software_copyright.entity.CallbackEntity;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
/** /**
...@@ -52,7 +51,7 @@ public interface SoftwareCopyRightService { ...@@ -52,7 +51,7 @@ public interface SoftwareCopyRightService {
* *
* @param id biz_software_copyright 主键id * @param id biz_software_copyright 主键id
*/ */
BizSoftwareCopyrightDocRecordEntity listFile(Long id) throws Exception; BizSoftwareCopyrightDocRecordEntity listFile(Long id) ;
/** /**
* 获取下载地址 * 获取下载地址
...@@ -79,4 +78,13 @@ public interface SoftwareCopyRightService { ...@@ -79,4 +78,13 @@ public interface SoftwareCopyRightService {
*/ */
String zipFilesAndUpdateRecord(BizSoftwareCopyrightDocRecordEntity recordEntity); String zipFilesAndUpdateRecord(BizSoftwareCopyrightDocRecordEntity recordEntity);
/**
* 回调-生成基础文档
*
* @param taskId 回调任务ID
* @param type 回调类型
* @param callbackEntity 回调结果
*/
void callbackGeneratedBaseDoc(String taskId, String type, CallbackEntity callbackEntity);
} }
package cn.com.poc.ai_software_copyright.contant;
/**
* @author alex.yao
* @date 2026/1/5
*/
public class AiSoftWareCopyRightRedisKey {
public static final String CALL_BACK = "SOFT_WARE_COPY_RIGHT_CALL_BACK:";
}
package cn.com.poc.ai_software_copyright.domain;
import java.util.List;
import cn.com.poc.ai_software_copyright.domian.BaseInfo;
import cn.com.poc.ai_software_copyright.domian.TechnicalContent;
/**
* @author alex.yao
* @date 2026/1/7
*/
public class GeneratedDoc {
private Long id;
private String ui;
private String structure;
private String demand;
private String code;
private BaseInfo baseinfo;
private TechnicalContent technical_content;
private List<String> fileURLs;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public List<String> getFileURLs() {
return fileURLs;
}
public void setFileURLs(List<String> fileURLs) {
this.fileURLs = fileURLs;
}
public String getUi() {
return ui;
}
public void setUi(String ui) {
this.ui = ui;
}
public String getStructure() {
return structure;
}
public void setStructure(String structure) {
this.structure = structure;
}
public String getDemand() {
return demand;
}
public void setDemand(String demand) {
this.demand = demand;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public BaseInfo getBaseinfo() {
return baseinfo;
}
public void setBaseinfo(BaseInfo baseinfo) {
this.baseinfo = baseinfo;
}
public TechnicalContent getTechnical_content() {
return technical_content;
}
public void setTechnical_content(TechnicalContent technical_content) {
this.technical_content = technical_content;
}
}
package cn.com.poc.ai_software_copyright.domian;
import java.util.Map;
/**
* @author alex.yao
* @date 2026/1/5
*/
public class BaseDocTask {
private String taskId;
private String status;
private Map<String, Object> result;
public String getTaskId() {
return taskId;
}
public void setTaskId(String taskId) {
this.taskId = taskId;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public Map<String, Object> getResult() {
return result;
}
public void setResult(Map<String, Object> result) {
this.result = result;
}
}
package cn.com.poc.ai_software_copyright.entity;
/**
* @author alex.yao
* @date 2026/1/5
*/
public class CallbackEntity {
private Object result;
public Object getResult() {
return result;
}
public void setResult(Object result) {
this.result = result;
}
}
...@@ -12,4 +12,5 @@ where ...@@ -12,4 +12,5 @@ where
is_deleted = 'N' is_deleted = 'N'
<< and LOCATE(:query,JSON_EXTRACT(base_info, '$.softwareFullName'))>> << and LOCATE(:query,JSON_EXTRACT(base_info, '$.softwareFullName'))>>
<< and generated_status = :generatedStatus >> << and generated_status = :generatedStatus >>
<< and generated_status in (:generatedStatusList) >>
order by CREATED_TIME desc order by CREATED_TIME desc
\ No newline at end of file
package cn.com.poc.ai_software_copyright.query; package cn.com.poc.ai_software_copyright.query;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
/** /**
* Query Condition class for SoftwareCopyrightQuery * Query Condition class for SoftwareCopyrightQuery
*/ */
public class SoftwareCopyrightQueryCondition implements Serializable{ public class SoftwareCopyrightQueryCondition implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private java.lang.String query; private java.lang.String query;
public java.lang.String getQuery(){ public java.lang.String getQuery() {
return this.query; return this.query;
} }
public void setQuery(java.lang.String query){ public void setQuery(java.lang.String query) {
this.query = query; this.query = query;
} }
private java.lang.String generatedStatus; private java.lang.String generatedStatus;
public java.lang.String getGeneratedStatus(){
public java.lang.String getGeneratedStatus() {
return this.generatedStatus; return this.generatedStatus;
} }
public void setGeneratedStatus(java.lang.String generatedStatus){ public void setGeneratedStatus(java.lang.String generatedStatus) {
this.generatedStatus = generatedStatus; this.generatedStatus = generatedStatus;
} }
private List<String> generatedStatusList;
public List<String> getGeneratedStatusList() {
return generatedStatusList;
}
public void setGeneratedStatusList(List<String> generatedStatusList) {
this.generatedStatusList = generatedStatusList;
}
} }
\ No newline at end of file
...@@ -2,6 +2,7 @@ package cn.com.poc.ai_software_copyright.rest.impl; ...@@ -2,6 +2,7 @@ package cn.com.poc.ai_software_copyright.rest.impl;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -16,12 +17,14 @@ import cn.com.poc.ai_software_copyright.dto.SoftwareCopyRightAssistantDto; ...@@ -16,12 +17,14 @@ import cn.com.poc.ai_software_copyright.dto.SoftwareCopyRightAssistantDto;
import cn.com.poc.ai_software_copyright.dto.SoftwareCopyRightDto; import cn.com.poc.ai_software_copyright.dto.SoftwareCopyRightDto;
import cn.com.poc.ai_software_copyright.dto.SoftwareCopyRightFilesDto; import cn.com.poc.ai_software_copyright.dto.SoftwareCopyRightFilesDto;
import cn.com.poc.ai_software_copyright.entity.BizSoftwareCopyrightEntity; import cn.com.poc.ai_software_copyright.entity.BizSoftwareCopyrightEntity;
import cn.com.poc.ai_software_copyright.entity.CallbackEntity;
import cn.com.poc.ai_software_copyright.query.SoftwareCopyrightQueryCondition; import cn.com.poc.ai_software_copyright.query.SoftwareCopyrightQueryCondition;
import cn.com.poc.ai_software_copyright.query.SoftwareCopyrightQueryItem; import cn.com.poc.ai_software_copyright.query.SoftwareCopyrightQueryItem;
import cn.com.poc.ai_software_copyright.rest.BizSoftwareCopyrightRest; import cn.com.poc.ai_software_copyright.rest.BizSoftwareCopyrightRest;
import cn.com.poc.ai_software_copyright.service.BizSoftwareCopyrightService; import cn.com.poc.ai_software_copyright.service.BizSoftwareCopyrightService;
import cn.com.poc.common.service.RedisService; import cn.com.poc.common.service.RedisService;
import cn.com.poc.common.utils.JsonUtils; import cn.com.poc.common.utils.JsonUtils;
import cn.com.poc.common.utils.StringUtils;
import cn.com.yict.framemax.data.model.PagingInfo; import cn.com.yict.framemax.data.model.PagingInfo;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.Assert; import org.springframework.util.Assert;
...@@ -31,6 +34,9 @@ import org.springframework.web.multipart.MultipartFile; ...@@ -31,6 +34,9 @@ import org.springframework.web.multipart.MultipartFile;
public class BizSoftwareCopyrightRestImpl implements BizSoftwareCopyrightRest { public class BizSoftwareCopyrightRestImpl implements BizSoftwareCopyrightRest {
@Resource
private RedisService redisService;
@Resource @Resource
private SoftwareCopyRightService softwareCopyRightService; private SoftwareCopyRightService softwareCopyRightService;
...@@ -58,10 +64,24 @@ public class BizSoftwareCopyrightRestImpl implements BizSoftwareCopyrightRest { ...@@ -58,10 +64,24 @@ public class BizSoftwareCopyrightRestImpl implements BizSoftwareCopyrightRest {
@Override @Override
public List<SoftwareCopyRightDto> querySoftwareCopyRight(String query, String generatedStatus, public List<SoftwareCopyRightDto> querySoftwareCopyRight(String query, String generatedStatus,
PagingInfo pagingInfo) {
PagingInfo pagingInfo) {
SoftwareCopyrightQueryCondition condition = new SoftwareCopyrightQueryCondition(); SoftwareCopyrightQueryCondition condition = new SoftwareCopyrightQueryCondition();
List<String> generatedStatusList = null;
if (StringUtils.isNotBlank(generatedStatus)) {
if (generatedStatus.equals(AiSoftWareCopyRightEnum.GENERATED_STATUS.Daft.name())
|| generatedStatus.equals(AiSoftWareCopyRightEnum.GENERATED_STATUS.Pending.name())
|| generatedStatus.equals(AiSoftWareCopyRightEnum.GENERATED_STATUS.Running.name())
) {
generatedStatusList = new ArrayList<>();
generatedStatusList.add(AiSoftWareCopyRightEnum.GENERATED_STATUS.Daft.name());
generatedStatusList.add(AiSoftWareCopyRightEnum.GENERATED_STATUS.Pending.name());
generatedStatusList.add(AiSoftWareCopyRightEnum.GENERATED_STATUS.Running.name());
condition.setGeneratedStatusList(generatedStatusList);
} else {
condition.setGeneratedStatus(generatedStatus); condition.setGeneratedStatus(generatedStatus);
}
}
condition.setQuery(query); condition.setQuery(query);
List<SoftwareCopyrightQueryItem> softwareCopyrightQueryItems = List<SoftwareCopyrightQueryItem> softwareCopyrightQueryItems =
bizSoftwareCopyrightService.softwareCopyrightQuery(condition, pagingInfo); bizSoftwareCopyrightService.softwareCopyrightQuery(condition, pagingInfo);
...@@ -107,21 +127,15 @@ public class BizSoftwareCopyrightRestImpl implements BizSoftwareCopyrightRest { ...@@ -107,21 +127,15 @@ public class BizSoftwareCopyrightRestImpl implements BizSoftwareCopyrightRest {
return softwareCopyRightService.getDownloadUrl(id); return softwareCopyRightService.getDownloadUrl(id);
} }
@Resource
private RedisService redisService;
@Override @Override
public void callbackGeneratedBaseDoc(String taskId, public void callbackGeneratedBaseDoc(String taskId,
String type, String type,
CallbackDto callbackDto) { CallbackDto callbackDto) {
if (redisService.hasKey(taskId)) { CallbackEntity callbackEntity = new CallbackEntity();
if (type.equals("success")) { if (callbackDto != null && callbackDto.getResult() != null) {
redisService.set(taskId, type); callbackEntity.setResult(callbackDto.getResult());
} else if (type.equals("error")) {
redisService.set(taskId, type);
} else {
redisService.set(taskId + ":" + type, JsonUtils.serialize(callbackDto));
}
} }
softwareCopyRightService.callbackGeneratedBaseDoc(taskId, type, callbackEntity);
} }
} }
\ No newline at end of file
...@@ -4,19 +4,21 @@ import cn.com.yict.framemax.core.service.BaseService; ...@@ -4,19 +4,21 @@ import cn.com.yict.framemax.core.service.BaseService;
import cn.com.poc.ai_software_copyright.entity.BizSoftwareCopyrightDocRecordEntity; import cn.com.poc.ai_software_copyright.entity.BizSoftwareCopyrightDocRecordEntity;
import cn.com.yict.framemax.data.model.PagingInfo; import cn.com.yict.framemax.data.model.PagingInfo;
import java.util.Collection;
import java.util.List; import java.util.List;
public interface BizSoftwareCopyrightDocRecordService extends BaseService { public interface BizSoftwareCopyrightDocRecordService extends BaseService {
BizSoftwareCopyrightDocRecordEntity get(java.lang.Long id) throws Exception; BizSoftwareCopyrightDocRecordEntity get(java.lang.Long id) throws Exception;
BizSoftwareCopyrightDocRecordEntity getByRelationId(java.lang.Long relationId);
List<BizSoftwareCopyrightDocRecordEntity> findByExample(BizSoftwareCopyrightDocRecordEntity example, List<BizSoftwareCopyrightDocRecordEntity> findByExample(BizSoftwareCopyrightDocRecordEntity example,
PagingInfo pagingInfo) throws Exception; PagingInfo pagingInfo);
BizSoftwareCopyrightDocRecordEntity save(BizSoftwareCopyrightDocRecordEntity entity) throws Exception; BizSoftwareCopyrightDocRecordEntity save(BizSoftwareCopyrightDocRecordEntity entity);
BizSoftwareCopyrightDocRecordEntity update(BizSoftwareCopyrightDocRecordEntity entity) throws Exception; BizSoftwareCopyrightDocRecordEntity update(BizSoftwareCopyrightDocRecordEntity entity);
void deletedById(java.lang.Long id) throws Exception; void deletedById(java.lang.Long id) throws Exception;
......
package cn.com.poc.ai_software_copyright.service.impl; package cn.com.poc.ai_software_copyright.service.impl;
import cn.com.yict.framemax.core.exception.BusinessException; import cn.com.poc.common.constant.CommonConstant;
import cn.com.yict.framemax.core.service.impl.BaseServiceImpl; import cn.com.yict.framemax.core.service.impl.BaseServiceImpl;
import cn.com.poc.ai_software_copyright.service.BizSoftwareCopyrightDocRecordService; import cn.com.poc.ai_software_copyright.service.BizSoftwareCopyrightDocRecordService;
import cn.com.poc.ai_software_copyright.model.BizSoftwareCopyrightDocRecordModel; import cn.com.poc.ai_software_copyright.model.BizSoftwareCopyrightDocRecordModel;
...@@ -8,18 +8,11 @@ import cn.com.poc.ai_software_copyright.entity.BizSoftwareCopyrightDocRecordEnti ...@@ -8,18 +8,11 @@ import cn.com.poc.ai_software_copyright.entity.BizSoftwareCopyrightDocRecordEnti
import cn.com.poc.ai_software_copyright.convert.BizSoftwareCopyrightDocRecordConvert; import cn.com.poc.ai_software_copyright.convert.BizSoftwareCopyrightDocRecordConvert;
import cn.com.poc.ai_software_copyright.repository.BizSoftwareCopyrightDocRecordRepository; import cn.com.poc.ai_software_copyright.repository.BizSoftwareCopyrightDocRecordRepository;
import cn.com.yict.framemax.data.model.PagingInfo; import cn.com.yict.framemax.data.model.PagingInfo;
import cn.hutool.core.util.ZipUtil;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.List; import java.util.List;
import javax.annotation.Resource; import javax.annotation.Resource;
...@@ -45,9 +38,20 @@ public class BizSoftwareCopyrightDocRecordServiceImpl extends BaseServiceImpl ...@@ -45,9 +38,20 @@ public class BizSoftwareCopyrightDocRecordServiceImpl extends BaseServiceImpl
return BizSoftwareCopyrightDocRecordConvert.modelToEntity(model); return BizSoftwareCopyrightDocRecordConvert.modelToEntity(model);
} }
@Override
public BizSoftwareCopyrightDocRecordEntity getByRelationId(Long relationId) {
BizSoftwareCopyrightDocRecordModel model = new BizSoftwareCopyrightDocRecordModel();
model.setRelationId(relationId);
model.setIsDeleted(CommonConstant.IsDeleted.N);
List<BizSoftwareCopyrightDocRecordModel> models = this.repository.findByExample(model, null);
if (CollectionUtils.isNotEmpty(models)) {
return BizSoftwareCopyrightDocRecordConvert.modelToEntity(models.get(0));
}
return null;
}
public List<BizSoftwareCopyrightDocRecordEntity> findByExample(BizSoftwareCopyrightDocRecordEntity example, public List<BizSoftwareCopyrightDocRecordEntity> findByExample(BizSoftwareCopyrightDocRecordEntity example,
PagingInfo pagingInfo) throws Exception { PagingInfo pagingInfo) {
List<BizSoftwareCopyrightDocRecordEntity> result = new ArrayList<BizSoftwareCopyrightDocRecordEntity>(); List<BizSoftwareCopyrightDocRecordEntity> result = new ArrayList<BizSoftwareCopyrightDocRecordEntity>();
BizSoftwareCopyrightDocRecordModel model = new BizSoftwareCopyrightDocRecordModel(); BizSoftwareCopyrightDocRecordModel model = new BizSoftwareCopyrightDocRecordModel();
if (example != null) { if (example != null) {
...@@ -62,7 +66,7 @@ public class BizSoftwareCopyrightDocRecordServiceImpl extends BaseServiceImpl ...@@ -62,7 +66,7 @@ public class BizSoftwareCopyrightDocRecordServiceImpl extends BaseServiceImpl
return result; return result;
} }
public BizSoftwareCopyrightDocRecordEntity save(BizSoftwareCopyrightDocRecordEntity entity) throws Exception { public BizSoftwareCopyrightDocRecordEntity save(BizSoftwareCopyrightDocRecordEntity entity) {
Assert.notNull(entity); Assert.notNull(entity);
entity.setId(null); entity.setId(null);
entity.setIsDeleted("N"); entity.setIsDeleted("N");
...@@ -71,7 +75,7 @@ public class BizSoftwareCopyrightDocRecordServiceImpl extends BaseServiceImpl ...@@ -71,7 +75,7 @@ public class BizSoftwareCopyrightDocRecordServiceImpl extends BaseServiceImpl
return BizSoftwareCopyrightDocRecordConvert.modelToEntity(saveModel); return BizSoftwareCopyrightDocRecordConvert.modelToEntity(saveModel);
} }
public BizSoftwareCopyrightDocRecordEntity update(BizSoftwareCopyrightDocRecordEntity entity) throws Exception { public BizSoftwareCopyrightDocRecordEntity update(BizSoftwareCopyrightDocRecordEntity entity) {
Assert.notNull(entity); Assert.notNull(entity);
Assert.notNull(entity.getId(), "update pk can not be null"); Assert.notNull(entity.getId(), "update pk can not be null");
BizSoftwareCopyrightDocRecordModel model = this.repository.get(entity.getId()); BizSoftwareCopyrightDocRecordModel model = this.repository.get(entity.getId());
......
...@@ -13,6 +13,8 @@ public interface BizFileUploadRecordService extends BaseService { ...@@ -13,6 +13,8 @@ public interface BizFileUploadRecordService extends BaseService {
BizFileUploadRecordModel get(Long id) throws Exception; BizFileUploadRecordModel get(Long id) throws Exception;
BizFileUploadRecordModel getByMD5(String md5);
List<BizFileUploadRecordModel> findByExample(BizFileUploadRecordModel example,PagingInfo pagingInfo) throws Exception; List<BizFileUploadRecordModel> findByExample(BizFileUploadRecordModel example,PagingInfo pagingInfo) throws Exception;
List<BizFileUploadRecordModel> findByFileLink(List<String> fileLink) throws Exception; List<BizFileUploadRecordModel> findByFileLink(List<String> fileLink) throws Exception;
......
...@@ -45,7 +45,19 @@ public class BizFileUploadRecordServiceImpl extends BaseServiceImpl ...@@ -45,7 +45,19 @@ public class BizFileUploadRecordServiceImpl extends BaseServiceImpl
return this.repository.get(id); return this.repository.get(id);
} }
public List<BizFileUploadRecordModel> findByExample(BizFileUploadRecordModel example, PagingInfo pagingInfo) throws Exception { @Override
public BizFileUploadRecordModel getByMD5(String md5) {
BizFileUploadRecordModel bizFileUploadRecordModel = new BizFileUploadRecordModel();
bizFileUploadRecordModel.setMd5(md5);
List<BizFileUploadRecordModel> models = this.repository.findByExample(bizFileUploadRecordModel);
if (CollectionUtils.isEmpty(models)) {
return null;
}
return models.get(0);
}
public List<BizFileUploadRecordModel> findByExample(BizFileUploadRecordModel example, PagingInfo pagingInfo)
throws Exception {
if (example == null) { if (example == null) {
example = new BizFileUploadRecordModel(); example = new BizFileUploadRecordModel();
} }
...@@ -60,13 +72,14 @@ public class BizFileUploadRecordServiceImpl extends BaseServiceImpl ...@@ -60,13 +72,14 @@ public class BizFileUploadRecordServiceImpl extends BaseServiceImpl
FileUploadQueryCondition fileUploadQueryCondition = new FileUploadQueryCondition(); FileUploadQueryCondition fileUploadQueryCondition = new FileUploadQueryCondition();
fileUploadQueryCondition.setFileUrlList(fileLinks); fileUploadQueryCondition.setFileUrlList(fileLinks);
List<FileUploadQueryItem> fileUploadQueryItems = this.sqlDao.query(fileUploadQueryCondition, FileUploadQueryItem.class); List<FileUploadQueryItem> fileUploadQueryItems =
this.sqlDao.query(fileUploadQueryCondition, FileUploadQueryItem.class);
List<BizFileUploadRecordModel> bizFileUploadRecordModels = new ArrayList<>(); List<BizFileUploadRecordModel> bizFileUploadRecordModels = new ArrayList<>();
if(CollectionUtils.isNotEmpty(fileUploadQueryItems)){ if (CollectionUtils.isNotEmpty(fileUploadQueryItems)) {
for (FileUploadQueryItem fileUploadQueryItem : fileUploadQueryItems) { for (FileUploadQueryItem fileUploadQueryItem : fileUploadQueryItems) {
BizFileUploadRecordModel bizFileUploadRecordModel = new BizFileUploadRecordModel(); BizFileUploadRecordModel bizFileUploadRecordModel = new BizFileUploadRecordModel();
BeanUtils.copyProperties(fileUploadQueryItem,bizFileUploadRecordModel); BeanUtils.copyProperties(fileUploadQueryItem, bizFileUploadRecordModel);
bizFileUploadRecordModels.add(bizFileUploadRecordModel); bizFileUploadRecordModels.add(bizFileUploadRecordModel);
} }
} }
......
...@@ -82,7 +82,8 @@ public class DocumentLoad { ...@@ -82,7 +82,8 @@ public class DocumentLoad {
List<HSLFSlide> slides = hslfSlideShow.getSlides(); List<HSLFSlide> slides = hslfSlideShow.getSlides();
SlideShowExtractor slideShowExtractor = new SlideShowExtractor(hslfSlideShow); SlideShowExtractor slideShowExtractor = new SlideShowExtractor(hslfSlideShow);
for (HSLFSlide slide : slides) { for (HSLFSlide slide : slides) {
sb.append("Page:").append(slide.getSlideNumber()).append(StringUtils.LF).append(slideShowExtractor.getText(slide)).append(StringUtils.LF); sb.append("Page:").append(slide.getSlideNumber()).append(StringUtils.LF)
.append(slideShowExtractor.getText(slide)).append(StringUtils.LF);
} }
slideShowExtractor.close(); slideShowExtractor.close();
is.close(); is.close();
...@@ -106,7 +107,8 @@ public class DocumentLoad { ...@@ -106,7 +107,8 @@ public class DocumentLoad {
for (CTTextParagraph textParagraph : pList) { for (CTTextParagraph textParagraph : pList) {
List<CTRegularTextRun> textRuns = textParagraph.getRList(); List<CTRegularTextRun> textRuns = textParagraph.getRList();
for (CTRegularTextRun textRun : textRuns) { for (CTRegularTextRun textRun : textRuns) {
sb.append("Page:").append(slide.getSlideNumber()).append(StringUtils.LF).append(textRun.getT()).append(StringUtils.LF); sb.append("Page:").append(slide.getSlideNumber()).append(StringUtils.LF)
.append(textRun.getT()).append(StringUtils.LF);
} }
} }
} }
...@@ -192,6 +194,41 @@ public class DocumentLoad { ...@@ -192,6 +194,41 @@ public class DocumentLoad {
case "xls": case "xls":
case "csv": case "csv":
return excelToMarkdown(file); return excelToMarkdown(file);
// 添加对代码文件的支持
case "java":
case "py":
case "js":
case "ts":
case "cpp":
case "c":
case "h":
case "cs":
case "go":
case "rb":
case "php":
case "html":
case "css":
case "vue":
case "jsx":
case "tsx":
case "sql":
case "xml":
case "json":
case "yaml":
case "yml":
case "sh":
case "bash":
case "pl":
case "pm":
case "r":
case "scala":
case "kt":
case "kts":
case "swift":
case "dart":
case "rs":
case "lua":
return loadCodeFile(file, type);
default: default:
throw new BusinessException(type + " format is not yet supported"); throw new BusinessException(type + " format is not yet supported");
} }
...@@ -274,4 +311,51 @@ public class DocumentLoad { ...@@ -274,4 +311,51 @@ public class DocumentLoad {
throw new I18nMessageException("exception/file.load.error"); throw new I18nMessageException("exception/file.load.error");
} }
} }
/**
* 读取代码文件内容
*
* @param file 代码文件
* @param type 文件类型扩展名
* @return 代码文件内容
* @throws IOException
*/
public static String loadCodeFile(File file, String type) throws IOException {
// 验证文件类型
if (!isValidCodeFileType(type)) {
throw new BusinessException("Unsupported code file type: " + type);
}
// 使用 UTF-8 编码读取代码文件
StringBuilder content = new StringBuilder();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(
new FileInputStream(file), "UTF-8"))) {
String line;
while ((line = reader.readLine()) != null) {
content.append(line).append(StringUtils.LF);
}
}
return content.toString();
}
/**
* 验证是否为支持的代码文件类型
*
* @param type 文件扩展名
* @return 是否为支持的代码文件类型
*/
private static boolean isValidCodeFileType(String type) {
String[] supportedTypes = {
"java", "py", "js", "ts", "cpp", "c", "h", "cs", "go", "rb",
"php", "html", "css", "vue", "jsx", "tsx", "sql", "xml", "json",
"yaml", "yml", "sh", "bash", "pl", "pm", "r", "scala", "kt",
"kts", "swift", "dart", "rs", "lua"
};
for (String supportedType : supportedTypes) {
if (supportedType.equalsIgnoreCase(type)) {
return true;
}
}
return false;
}
} }
package cn.com.poc.common.utils; package cn.com.poc.common.utils;
import java.io.IOException;
import java.io.InputStream;
import java.security.MessageDigest; import java.security.MessageDigest;
import cn.com.yict.framemax.core.exception.BusinessException;
import cn.hutool.crypto.digest.MD5;
import jdk.internal.util.xml.impl.Input;
public class MD5Util { public class MD5Util {
private static String byteArrayToHexString(byte b[]) { private static String byteArrayToHexString(byte b[]) {
...@@ -42,4 +48,15 @@ public class MD5Util { ...@@ -42,4 +48,15 @@ public class MD5Util {
private static final String hexDigits[] = {"0", "1", "2", "3", "4", "5", private static final String hexDigits[] = {"0", "1", "2", "3", "4", "5",
"6", "7", "8", "9", "a", "b", "c", "d", "e", "f"}; "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};
public static String fileToMD5(InputStream inputStream) {
try {
byte[] bytes = new byte[inputStream.available()];
inputStream.read(bytes);
String md5 = MD5.create().digestHex(bytes);
return md5;
} catch (IOException e) {
throw new BusinessException(e);
}
}
} }
...@@ -2,21 +2,34 @@ package cn.com.poc.message.service.impl; ...@@ -2,21 +2,34 @@ package cn.com.poc.message.service.impl;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ExecutionException;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import cn.com.poc.ai_software_copyright.agent.SoftwareCopyRightAgent; import cn.com.poc.ai_software_copyright.agent.SoftwareCopyRightAgent;
import cn.com.poc.ai_software_copyright.contant.AiSoftWareCopyRightEnum; import cn.com.poc.ai_software_copyright.contant.AiSoftWareCopyRightEnum;
import cn.com.poc.ai_software_copyright.contant.AiSoftWareCopyRightRedisKey;
import cn.com.poc.ai_software_copyright.domain.GeneratedDoc;
import cn.com.poc.ai_software_copyright.domian.BaseInfo;
import cn.com.poc.ai_software_copyright.domian.TechnicalContent;
import cn.com.poc.ai_software_copyright.entity.BizSoftwareCopyrightEntity; import cn.com.poc.ai_software_copyright.entity.BizSoftwareCopyrightEntity;
import cn.com.poc.ai_software_copyright.service.BizSoftwareCopyrightService; import cn.com.poc.ai_software_copyright.service.BizSoftwareCopyrightService;
import cn.com.poc.common.service.RedisService;
import cn.com.poc.common.utils.JsonUtils; import cn.com.poc.common.utils.JsonUtils;
import cn.com.poc.common.utils.StringUtils;
import cn.com.poc.message.entity.SoftwareCopyRightMessage; import cn.com.poc.message.entity.SoftwareCopyRightMessage;
import cn.com.poc.message.service.SoftwareCopyRightConsumerService; import cn.com.poc.message.service.SoftwareCopyRightConsumerService;
import cn.com.poc.message.service.SoftwareCopyRightProduceService; import cn.com.poc.message.service.SoftwareCopyRightProduceService;
import cn.com.poc.message.topic.SoftwareCopyRightTopic; import cn.com.poc.message.topic.SoftwareCopyRightTopic;
import cn.com.yict.framemax.core.exception.BusinessException;
import cn.com.yict.framemax.tumbleweed.client.annotation.Consumer; import cn.com.yict.framemax.tumbleweed.client.annotation.Consumer;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
...@@ -26,6 +39,8 @@ import org.springframework.stereotype.Service; ...@@ -26,6 +39,8 @@ import org.springframework.stereotype.Service;
@Service @Service
public class SoftwareCopyRightConsumerServiceImpl implements SoftwareCopyRightConsumerService { public class SoftwareCopyRightConsumerServiceImpl implements SoftwareCopyRightConsumerService {
private Logger logger = LoggerFactory.getLogger(SoftwareCopyRightConsumerService.class);
@Resource @Resource
private BizSoftwareCopyrightService bizSoftwareCopyrightService; private BizSoftwareCopyrightService bizSoftwareCopyrightService;
...@@ -35,6 +50,9 @@ public class SoftwareCopyRightConsumerServiceImpl implements SoftwareCopyRightCo ...@@ -35,6 +50,9 @@ public class SoftwareCopyRightConsumerServiceImpl implements SoftwareCopyRightCo
@Resource @Resource
private SoftwareCopyRightAgent agent; private SoftwareCopyRightAgent agent;
@Resource
private RedisService redisService;
/** /**
* 提交生成文档任务 * 提交生成文档任务
* *
...@@ -44,32 +62,39 @@ public class SoftwareCopyRightConsumerServiceImpl implements SoftwareCopyRightCo ...@@ -44,32 +62,39 @@ public class SoftwareCopyRightConsumerServiceImpl implements SoftwareCopyRightCo
@Override @Override
@Consumer(topic = SoftwareCopyRightTopic.SUBMIT_SOFTWARE_COPYRIGHT_TASK, scale = 2) @Consumer(topic = SoftwareCopyRightTopic.SUBMIT_SOFTWARE_COPYRIGHT_TASK, scale = 2)
public void submitTask(SoftwareCopyRightMessage message) { public void submitTask(SoftwareCopyRightMessage message) {
logger.info("submit task:{}", JsonUtils.serialize(message));
message.setStatus(AiSoftWareCopyRightEnum.GENERATED_STATUS.Running); message.setStatus(AiSoftWareCopyRightEnum.GENERATED_STATUS.Running);
produceService.updateStatus(message); produceService.updateStatus(message);
//todo 实现提交生成文档任务
String generatedDocType = message.getGeneratedDocType(); String generatedDocType = message.getGeneratedDocType();
List<String> docTypes = JsonUtils.deSerialize(generatedDocType, new TypeReference<List<String>>() { List<String> docTypes = JsonUtils.deSerialize(generatedDocType, new TypeReference<List<String>>() {
}.getType()); }.getType());
List<String> fileURLS = new ArrayList<>();
// 创建一个CompletableFuture数组来存储所有任务 if (StringUtils.isNotBlank(message.getReferenceDocumentFileUrl())) {
List<CompletableFuture<Object>> futures = docTypes.stream() fileURLS = JsonUtils.deSerialize(message.getReferenceDocumentFileUrl(), new TypeReference<List<String>>() {
.map(docType -> }.getType());
CompletableFuture.supplyAsync(() -> }
agent.generatedDocByType(message, AiSoftWareCopyRightEnum.DOC_TYPE.valueOf(docType))) String ui = redisService.get(AiSoftWareCopyRightRedisKey.CALL_BACK + message.getId() + ":ui").toString();
) String demand =
.collect(Collectors.toList()); redisService.get(AiSoftWareCopyRightRedisKey.CALL_BACK + message.getId() + ":demand").toString();
String structure =
// 等待所有任务完成 redisService.get(AiSoftWareCopyRightRedisKey.CALL_BACK + message.getId() + ":structure").toString();
CompletableFuture<Void> allFutures = CompletableFuture.allOf( JSONObject jsonObject = JSONObject.parseObject(structure);
futures.toArray(new CompletableFuture[0]) JSONObject result = jsonObject.getJSONObject("result");
); structure = result.toJSONString();
allFutures.thenRun(() -> { GeneratedDoc generatedDoc = new GeneratedDoc();
//todo 处理完成逻辑 generatedDoc.setId(message.getId());
generatedDoc.setFileURLs(fileURLS);
}).exceptionally(throwable -> { generatedDoc.setUi(ui);
generatedDoc.setDemand(demand);
return null; generatedDoc.setStructure(structure);
}); generatedDoc.setBaseinfo(StringUtils.isNotBlank(message.getBaseInfo()) ?
JsonUtils.deSerialize(message.getBaseInfo(), BaseInfo.class) : null);
generatedDoc.setTechnical_content(StringUtils.isNotBlank(message.getTechnicalContent()) ?
JsonUtils.deSerialize(message.getTechnicalContent(), TechnicalContent.class) : null);
for (String docType : docTypes) {
agent.generatedDocByType(generatedDoc, AiSoftWareCopyRightEnum.DOC_TYPE.valueOf(docType));
}
} }
@Override @Override
......
...@@ -29,3 +29,5 @@ pay.domain.callback.url=https://poc-sit.gsstcloud.com/api/rest/payCallBackRest/p ...@@ -29,3 +29,5 @@ pay.domain.callback.url=https://poc-sit.gsstcloud.com/api/rest/payCallBackRest/p
google.client.id=867985016759-n9qj00k174n9bibrtrqngvt89vbmnjrp.apps.googleusercontent.com google.client.id=867985016759-n9qj00k174n9bibrtrqngvt89vbmnjrp.apps.googleusercontent.com
google.custom.search.key=AIzaSyCV8PTQ10rG5wo4E004dR3mcGD1RM_PrBw google.custom.search.key=AIzaSyCV8PTQ10rG5wo4E004dR3mcGD1RM_PrBw
google.custom.search.cx=049026ecb26e840ed google.custom.search.cx=049026ecb26e840ed
dify.software_copyright.callball.url=https://super-modellink-sit.gsstcloud.com/api/rest/bizSoftwareCopyrightRest/callbackGeneratedBaseDoc.json
\ No newline at end of file
...@@ -29,3 +29,5 @@ pay.domain.callback.url=https://model-link.gsstcloud.com/api/rest/payCallBackRes ...@@ -29,3 +29,5 @@ pay.domain.callback.url=https://model-link.gsstcloud.com/api/rest/payCallBackRes
google.client.id=867985016759-n9qj00k174n9bibrtrqngvt89vbmnjrp.apps.googleusercontent.com google.client.id=867985016759-n9qj00k174n9bibrtrqngvt89vbmnjrp.apps.googleusercontent.com
google.custom.search.key=AIzaSyCV8PTQ10rG5wo4E004dR3mcGD1RM_PrBw google.custom.search.key=AIzaSyCV8PTQ10rG5wo4E004dR3mcGD1RM_PrBw
google.custom.search.cx=049026ecb26e840ed google.custom.search.cx=049026ecb26e840ed
dify.software_copyright.callball.url=https://super-modellink.gsstcloud.com/api/rest/bizSoftwareCopyrightRest/callbackGeneratedBaseDoc.json
\ No newline at end of file
...@@ -29,3 +29,5 @@ pay.domain.callback.url=https://poc-sit.gsstcloud.com/api/rest/payCallBackRest/p ...@@ -29,3 +29,5 @@ pay.domain.callback.url=https://poc-sit.gsstcloud.com/api/rest/payCallBackRest/p
google.client.id=867985016759-n9qj00k174n9bibrtrqngvt89vbmnjrp.apps.googleusercontent.com google.client.id=867985016759-n9qj00k174n9bibrtrqngvt89vbmnjrp.apps.googleusercontent.com
google.custom.search.key=AIzaSyCV8PTQ10rG5wo4E004dR3mcGD1RM_PrBw google.custom.search.key=AIzaSyCV8PTQ10rG5wo4E004dR3mcGD1RM_PrBw
google.custom.search.cx=049026ecb26e840ed google.custom.search.cx=049026ecb26e840ed
dify.software_copyright.callball.url=https://super-modellink-sit.gsstcloud.com/api/rest/bizSoftwareCopyrightRest/callbackGeneratedBaseDoc.json
\ No newline at end of file
...@@ -29,3 +29,6 @@ pay.domain.callback.url=https://model-link.gsstcloud.com/api/rest/payCallBackRes ...@@ -29,3 +29,6 @@ pay.domain.callback.url=https://model-link.gsstcloud.com/api/rest/payCallBackRes
google.client.id=867985016759-n9qj00k174n9bibrtrqngvt89vbmnjrp.apps.googleusercontent.com google.client.id=867985016759-n9qj00k174n9bibrtrqngvt89vbmnjrp.apps.googleusercontent.com
google.custom.search.key=AIzaSyCV8PTQ10rG5wo4E004dR3mcGD1RM_PrBw google.custom.search.key=AIzaSyCV8PTQ10rG5wo4E004dR3mcGD1RM_PrBw
google.custom.search.cx=049026ecb26e840ed google.custom.search.cx=049026ecb26e840ed
dify.software_copyright.callball.url=https://super-modellink.gsstcloud.com/api/rest/bizSoftwareCopyrightRest/callbackGeneratedBaseDoc.json
\ No newline at end of file
...@@ -72,3 +72,6 @@ framemax-frame.job.disable=false ...@@ -72,3 +72,6 @@ framemax-frame.job.disable=false
#pay #pay
pay.config.acctId=16653311814572 pay.config.acctId=16653311814572
pay.config.wxAppId=wxea3470b5d2d97eca pay.config.wxAppId=wxea3470b5d2d97eca
#dify
dify.base.url=https://dify.gsstcloud.com/v1
package cn.com.poc.softwareCopyRight;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.Collections;
import java.util.Set;
import cn.com.gsst.dify_client.exception.DifyApiException;
import cn.com.poc.ai_software_copyright.agent.SoftwareCopyRightAgent;
import cn.com.poc.ai_software_copyright.contant.AiSoftWareCopyRightRedisKey;
import cn.com.poc.ai_software_copyright.convert.BizSoftwareCopyrightConvert;
import cn.com.poc.ai_software_copyright.dto.SoftwareCopyRightDto;
import cn.com.poc.ai_software_copyright.entity.BizSoftwareCopyrightEntity;
import cn.com.poc.ai_software_copyright.service.BizSoftwareCopyrightService;
import cn.com.poc.common.service.RedisService;
import cn.com.yict.framemax.core.spring.SingleContextInitializer;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
/**
* @author alex.yao
* @date 2026/1/5
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(initializers = SingleContextInitializer.class)
@WebAppConfiguration
public class AgentTest {
@Resource
private RedisService redisService;
@Resource
private BizSoftwareCopyrightService bizSoftwareCopyrightService;
@Resource
private SoftwareCopyRightAgent softwareCopyRightAgent;
@Test
public void test_agent() throws DifyApiException, IOException, InterruptedException {
BizSoftwareCopyrightEntity bizSoftwareCopyrightEntity = bizSoftwareCopyrightService.get(6L);
SoftwareCopyRightDto softwareCopyRightDto = BizSoftwareCopyrightConvert.entityToDto(bizSoftwareCopyrightEntity);
softwareCopyRightAgent.generatedBaseDoc("SOFT_WARE_COPY_RIGHT_CALL_BACK:6", Collections.emptyList(),
softwareCopyRightDto.getBaseInfo(),
softwareCopyRightDto.getTechnicalContent());
}
@Test
public void test() {
String string = redisService.get(AiSoftWareCopyRightRedisKey.CALL_BACK + "6:structure").toString();
JSONObject jsonObject = JSONObject.parseObject(string);
JSONObject result = jsonObject.getJSONObject("result");
System.out.println(result.toJSONString());
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment