Commit bc8d3b3e authored by R10's avatar R10

Merge branch 'release_gdghg' of ssh://gitlab.gsstcloud.com:10022/poc/poc-api into release_gdghg

parents 3aa61439 38e6eba9
package cn.com.poc.writing.aggregate;
import cn.com.poc.writing.entity.ExaminationConfigItemEntity;
import cn.com.poc.writing.entity.ExaminationDetailEntity;
import cn.com.poc.writing.entity.ExaminationEntity;
import cn.com.poc.writing.entity.GenerateExaminationEntity;
import java.util.Collection;
import java.util.List;
/**
......@@ -37,7 +35,7 @@ public interface ExaminationService {
* @param examinationId 查询
* @param userId 用户ID
*/
Collection<ExaminationDetailEntity> getExaminations(String examinationId, Long userId);
ExaminationEntity getExaminations(String examinationId, Long userId);
/**
* 获取历史记录
......@@ -46,4 +44,11 @@ public interface ExaminationService {
* @param userId 用户ID
*/
List<ExaminationEntity> getList(String query, Long userId);
/**
* 批量删除
* @param examinationIds 试卷ID
* @param userId 用户ID
*/
boolean batchDelete(List<String> examinationIds, Long userId);
}
......@@ -3,7 +3,6 @@ package cn.com.poc.writing.aggregate.impl;
import cn.com.poc.agent_application.entity.BizAgentApplicationGcConfigEntity;
import cn.com.poc.agent_application.service.BizAgentApplicationGcConfigService;
import cn.com.poc.common.constant.CommonConstant;
import cn.com.poc.common.constant.FmxParamConfigConstant;
import cn.com.poc.common.utils.*;
import cn.com.poc.thirdparty.resource.demand.ai.constants.LLMRoleEnum;
import cn.com.poc.thirdparty.resource.demand.ai.entity.dialogue.Message;
......@@ -23,7 +22,6 @@ import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.retry.annotation.Retryable;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
......@@ -106,7 +104,7 @@ public class ExaminationServiceImpl implements ExaminationService {
BufferedReader bufferedReader = llmService.chatChunk(largeModelResponse);
SSEUtil sseUtil = new SSEUtil();
List<ExaminationDetailEntity> examinationDetailEntities = outputExaminationBuffer(bufferedReader, sseUtil, examinationId);
List<ExaminationDetail> examinationDetailEntities = outputExaminationBuffer(bufferedReader, sseUtil, examinationId);
if (CollectionUtils.isEmpty(examinationDetailEntities)) {
throw new BusinessException("生成试卷题目失败,联系管理员");
}
......@@ -154,24 +152,35 @@ public class ExaminationServiceImpl implements ExaminationService {
}
@Override
public Collection<ExaminationDetailEntity> getExaminations(String examinationId, Long userId) {
public ExaminationEntity getExaminations(String examinationId, Long userId) {
ExaminationEntity result = new ExaminationEntity();
BizExaminationEntity bizExaminationEntity = new BizExaminationEntity();
bizExaminationEntity.setExaminationId(examinationId);
bizExaminationEntity.setMemberId(userId);
bizExaminationEntity.setIsDeleted(CommonConstant.IsDeleted.N);
List<BizExaminationEntity> bizExaminationEntities = bizExaminationService.findByExample(bizExaminationEntity, null);
if (CollectionUtils.isEmpty(bizExaminationEntities)) {
return Collections.emptyList();
return result;
}
BizExaminationEntity examinationEntity = bizExaminationEntities.get(0);
String examinationDetail = examinationEntity.getExaminationDetail();
if (StringUtils.isBlank(examinationDetail)) {
return Collections.emptyList();
return result;
}
return JsonUtils.<List<ExaminationDetailEntity>>deSerialize(examinationDetail, new TypeReference<List<ExaminationDetailEntity>>() {
List<ExaminationDetail> examinationDetailEntities = JsonUtils.deSerialize(examinationDetail, new TypeReference<List<ExaminationDetail>>() {
}.getType());
result.setExaminationDetails(examinationDetailEntities);
result.setExaminationId(examinationEntity.getExaminationId());
result.setTitle(examinationEntity.getTitle());
result.setN(examinationEntity.getN());
result.setLevel(examinationEntity.getLevel());
result.setDate(examinationEntity.getModifiedTime());
result.setTotalScore(examinationEntity.getTotalScore());
result.setPositions(examinationEntity.getPositions());
return result;
}
@Override
......@@ -187,6 +196,8 @@ public class ExaminationServiceImpl implements ExaminationService {
ExaminationEntity examinationEntity = new ExaminationEntity();
examinationEntity.setExaminationId(item.getExaminationId());
examinationEntity.setTitle(item.getTitle());
examinationEntity.setTotalScore(item.getTotalScore());
examinationEntity.setPositions(item.getPositions());
examinationEntity.setN(item.getN());
examinationEntity.setLevel(item.getLevel());
examinationEntity.setDate(item.getModifiedTime());
......@@ -196,6 +207,25 @@ public class ExaminationServiceImpl implements ExaminationService {
return res;
}
@Override
public boolean batchDelete(List<String> examinationIds, Long userId) {
ExaminationQueryCondition condition = new ExaminationQueryCondition();
condition.setExaminationIds(examinationIds);
condition.setMemberId(userId);
List<ExaminationQueryItem> examinationQueryItems = bizExaminationService.examinationQuery(condition, null);
if (CollectionUtils.isNotEmpty(examinationQueryItems)) {
try {
for (ExaminationQueryItem examinationQueryItem : examinationQueryItems) {
bizExaminationService.deletedById(examinationQueryItem.getId());
}
} catch (Exception e) {
logger.error("删除试卷失败:", e);
return false;
}
}
return true;
}
private Message[] buildMessage(String prompt, GenerateExaminationEntity generateExaminationEntity) {
String fileContent = generateExaminationEntity.getPositions();
if (StringUtils.isNoneBlank(generateExaminationEntity.getFileUrl())) {
......@@ -204,6 +234,7 @@ public class ExaminationServiceImpl implements ExaminationService {
}
String content = prompt.replace("${file_content}", fileContent)
.replace("${content}", generateExaminationEntity.getContent())
.replace("${number}", generateExaminationEntity.getN().toString())
.replace("${total_score}", generateExaminationEntity.getTotalScore().toString())
.replace("${level}", generateExaminationEntity.getLevel())
......@@ -217,13 +248,13 @@ public class ExaminationServiceImpl implements ExaminationService {
}
private List<ExaminationDetailEntity> outputExaminationBuffer(BufferedReader bufferedReader, SSEUtil sseUtil, String examinationId) throws IOException {
private List<ExaminationDetail> outputExaminationBuffer(BufferedReader bufferedReader, SSEUtil sseUtil, String examinationId) throws IOException {
String res = "";
StringBuilder output = new StringBuilder();
StringBuilder reasoningContent = new StringBuilder();
StringBuilder examinationRecordBuilder = new StringBuilder();
sseUtil.send("{\"examinationId\":\"" + examinationId + "\"}");
List<ExaminationDetailEntity> examinationDetailEntities = new ArrayList<>();
List<ExaminationDetail> examinationDetailEntities = new ArrayList<>();
try {
while ((res = bufferedReader.readLine()) != null) {
if (StringUtils.isEmpty(res)) {
......@@ -252,10 +283,10 @@ public class ExaminationServiceImpl implements ExaminationService {
int endIndex = examinationRecordBuilder.indexOf(endXML, contentStart);
if (endIndex != -1) {
String subStr = examinationRecordBuilder.substring(contentStart, endIndex);
ExaminationDetailEntity examinationDetailEntity = JsonUtils.deSerialize(subStr, ExaminationDetailEntity.class);
if (examinationDetailEntity != null) {
sseUtil.send(JsonUtils.serialize(examinationDetailEntity));
examinationDetailEntities.add(examinationDetailEntity);
ExaminationDetail examinationDetail = JsonUtils.deSerialize(subStr, ExaminationDetail.class);
if (examinationDetail != null) {
sseUtil.send(JsonUtils.serialize(examinationDetail));
examinationDetailEntities.add(examinationDetail);
examinationRecordBuilder = new StringBuilder(examinationRecordBuilder.substring(endIndex));
}
}
......
package cn.com.poc.writing.dto;
import java.util.List;
/**
* @author 52747
* @date 2025/8/15
*/
public class ExaminationBatchDeleteDto {
private List<String> examinationIds;
public List<String> getExaminationIds() {
return examinationIds;
}
public void setExaminationIds(List<String> examinationIds) {
this.examinationIds = examinationIds;
}
}
package cn.com.poc.writing.dto;
import cn.com.poc.writing.entity.ExaminationDetail;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import java.util.Date;
import java.util.List;
/**
* @author 52747
* @date 2025/8/14
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public class ExaminationDto {
private String examinationId;
......@@ -18,6 +25,36 @@ public class ExaminationDto {
private Date date;
private Integer totalScore;
private String positions;
public Integer getTotalScore() {
return totalScore;
}
public void setTotalScore(Integer totalScore) {
this.totalScore = totalScore;
}
public String getPositions() {
return positions;
}
public void setPositions(String positions) {
this.positions = positions;
}
private List<ExaminationDetail> examinationDetails;
public List<ExaminationDetail> getExaminationDetails() {
return examinationDetails;
}
public void setExaminationDetails(List<ExaminationDetail> examinationDetails) {
this.examinationDetails = examinationDetails;
}
public String getExaminationId() {
return examinationId;
}
......
......@@ -52,6 +52,19 @@ public class GenerateExaminationDto {
*/
private String fileUrl;
/**
* 出题内容
*/
private String content;
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getFileUrl() {
return fileUrl;
}
......
......@@ -6,7 +6,7 @@ import java.util.List;
* @author 52747
* @date 2025/8/14
*/
public class ExaminationDetailEntity {
public class ExaminationDetail {
private String questionType;
private Integer score;
......
package cn.com.poc.writing.entity;
import java.util.Date;
import java.util.List;
/**
* @author 52747
......@@ -18,6 +19,36 @@ public class ExaminationEntity {
private Date date;
private Integer totalScore;
private String positions;
private List<ExaminationDetail> examinationDetails;
public Integer getTotalScore() {
return totalScore;
}
public void setTotalScore(Integer totalScore) {
this.totalScore = totalScore;
}
public String getPositions() {
return positions;
}
public void setPositions(String positions) {
this.positions = positions;
}
public List<ExaminationDetail> getExaminationDetails() {
return examinationDetails;
}
public void setExaminationDetails(List<ExaminationDetail> examinationDetails) {
this.examinationDetails = examinationDetails;
}
public String getExaminationId() {
return examinationId;
}
......
......@@ -26,6 +26,15 @@ public class GenerateExaminationEntity {
private String fileUrl;
private String content;
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public List<String> getQuestionType() {
return questionType;
......
......@@ -21,4 +21,6 @@ from
where is_deleted = 'N'
<< and member_id = :memberId>>
<< and LOCATE(:query,title) >>
<< and examination_id in (:examinationIds) >>
order by MODIFIED_TIME desc
package cn.com.poc.writing.query;
import java.io.Serializable;
import java.util.List;
/**
* Query Condition class for ExaminationQuery
*/
public class ExaminationQueryCondition implements Serializable{
public class ExaminationQueryCondition implements Serializable {
private static final long serialVersionUID = 1L;
private java.lang.Long memberId;
public java.lang.Long getMemberId(){
public java.lang.Long getMemberId() {
return this.memberId;
}
public void setMemberId(java.lang.Long memberId){
public void setMemberId(java.lang.Long memberId) {
this.memberId = memberId;
}
private java.lang.String query;
public java.lang.String getQuery(){
public java.lang.String getQuery() {
return this.query;
}
public void setQuery(java.lang.String query){
public void setQuery(java.lang.String query) {
this.query = query;
}
private List<String> examinationIds;
public List<String> getExaminationIds() {
return examinationIds;
}
public void setExaminationIds(List<String> examinationIds) {
this.examinationIds = examinationIds;
}
}
\ No newline at end of file
package cn.com.poc.writing.rest;
import cn.com.poc.writing.dto.ExaminationConfigItemDto;
import cn.com.poc.writing.dto.ExaminationDetailDto;
import cn.com.poc.writing.dto.ExaminationDto;
import cn.com.poc.writing.dto.GenerateExaminationDto;
import cn.com.poc.writing.dto.*;
import cn.com.yict.framemax.core.rest.BaseRest;
import cn.com.yict.framemax.web.permission.Access;
import cn.com.yict.framemax.web.permission.Permission;
......@@ -44,7 +41,7 @@ public interface ExaminationRest extends BaseRest {
*
* @param examinationId 试卷ID
*/
List<ExaminationDetailDto> getExaminations(@RequestParam(value = "examinationId") String examinationId);
ExaminationDto getExaminations(@RequestParam(value = "examinationId") String examinationId);
/**
* 获取历史记录
......@@ -54,4 +51,12 @@ public interface ExaminationRest extends BaseRest {
*/
List<ExaminationDto> getList(@RequestParam(value = "query", required = false) String query);
/**
* 批量删除
*
* @param dto
*/
void batchDelete(@RequestBody ExaminationBatchDeleteDto dto);
}
......@@ -4,22 +4,21 @@ import cn.com.poc.common.utils.Assert;
import cn.com.poc.common.utils.BlContext;
import cn.com.poc.support.security.oauth.entity.UserBaseEntity;
import cn.com.poc.writing.aggregate.ExaminationService;
import cn.com.poc.writing.dto.ExaminationBatchDeleteDto;
import cn.com.poc.writing.dto.ExaminationConfigItemDto;
import cn.com.poc.writing.dto.ExaminationDetailDto;
import cn.com.poc.writing.dto.ExaminationDto;
import cn.com.poc.writing.dto.GenerateExaminationDto;
import cn.com.poc.writing.entity.ExaminationConfigItemEntity;
import cn.com.poc.writing.entity.ExaminationDetailEntity;
import cn.com.poc.writing.entity.ExaminationEntity;
import cn.com.poc.writing.entity.GenerateExaminationEntity;
import cn.com.poc.writing.rest.ExaminationRest;
import cn.com.yict.framemax.core.exception.BusinessException;
import cn.hutool.core.bean.BeanUtil;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
......@@ -60,24 +59,13 @@ public class ExaminationRestImpl implements ExaminationRest {
}
@Override
public List<ExaminationDetailDto> getExaminations(String examinationId) {
public ExaminationDto getExaminations(String examinationId) {
Assert.notBlank(examinationId);
UserBaseEntity currentUser = BlContext.getCurrentUser();
Collection<ExaminationDetailEntity> detailEntities = examinationService.getExaminations(examinationId, currentUser.getUserId());
List<ExaminationDetailDto> result = new ArrayList<>();
if (CollectionUtils.isNotEmpty(detailEntities)) {
result = detailEntities.stream().map(entity -> {
ExaminationDetailDto dto = new ExaminationDetailDto();
dto.setQuestionType(entity.getQuestionType());
dto.setScore(entity.getScore());
dto.setQuestion(entity.getQuestion());
dto.setChoice(entity.getChoice());
dto.setRightAnswers(entity.getRightAnswers());
dto.setRightAnswersAnalysis(entity.getRightAnswersAnalysis());
ExaminationEntity examinationEntity = examinationService.getExaminations(examinationId, currentUser.getUserId());
ExaminationDto dto = new ExaminationDto();
BeanUtil.copyProperties(examinationEntity, dto);
return dto;
}).collect(Collectors.toList());
}
return result;
}
@Override
......@@ -98,4 +86,14 @@ public class ExaminationRestImpl implements ExaminationRest {
}
return result;
}
@Override
public void batchDelete(ExaminationBatchDeleteDto dto) {
Assert.notEmpty(dto.getExaminationIds(),"删除ID不能为空");
UserBaseEntity currentUser = BlContext.getCurrentUser();
boolean deleted = examinationService.batchDelete(dto.getExaminationIds(), currentUser.getUserId());
if (!deleted){
throw new BusinessException("删除异常");
}
}
}
package cn.com.poc.examination;
import cn.com.poc.common.utils.JsonUtils;
import cn.com.poc.common.utils.SSEUtil;
import cn.com.poc.law.entity.Agent;
import cn.com.poc.thirdparty.resource.demand.ai.constants.LLMRoleEnum;
import cn.com.poc.thirdparty.resource.demand.ai.entity.dialogue.Message;
import cn.com.poc.thirdparty.resource.demand.ai.entity.largemodel.LargeModelDemandResult;
......@@ -11,16 +9,12 @@ import cn.com.poc.thirdparty.resource.demand.ai.entity.largemodel.Thinking;
import cn.com.poc.thirdparty.service.LLMService;
import cn.com.poc.writing.aggregate.ExaminationService;
import cn.com.poc.writing.entity.ExaminationConfigItemEntity;
import cn.com.poc.writing.entity.ExaminationDetailEntity;
import cn.com.poc.writing.entity.ExaminationEntity;
import cn.com.poc.writing.entity.GenerateExaminationEntity;
import cn.com.poc.writing.entity.ExaminationDetail;
import cn.com.yict.framemax.core.exception.BusinessException;
import cn.com.yict.framemax.core.spring.SingleContextInitializer;
import org.apache.commons.lang3.StringUtils;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
......@@ -28,11 +22,7 @@ import org.springframework.test.context.web.WebAppConfiguration;
import javax.annotation.Resource;
import java.io.BufferedReader;
import java.io.IOException;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
......@@ -135,7 +125,7 @@ public class ExaminationTest {
StringBuilder output = new StringBuilder();
StringBuilder reasoningContent = new StringBuilder();
List<ExaminationDetailEntity> list = new ArrayList<>();
List<ExaminationDetail> list = new ArrayList<>();
try {
while ((res = bufferedReader.readLine()) != null) {
if (StringUtils.isEmpty(res)) {
......@@ -156,7 +146,7 @@ public class ExaminationTest {
int endIndex = output.indexOf(endXML, contentStart);
if (endIndex != -1) {
String extracted = output.substring(contentStart, endIndex);
ExaminationDetailEntity generateExaminationEntity = JsonUtils.deSerialize(extracted, ExaminationDetailEntity.class);
ExaminationDetail generateExaminationEntity = JsonUtils.deSerialize(extracted, ExaminationDetail.class);
System.out.println(JsonUtils.serialize(generateExaminationEntity));
list.add(generateExaminationEntity);
output = new StringBuilder(output.substring(endIndex));
......
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