|
|
|
@ -76,6 +76,7 @@ public class ChatMessageServiceImpl implements ChatMessageService {
|
|
|
|
|
try {
|
|
|
|
|
// 目前仅使用讯飞星火大模型
|
|
|
|
|
String appId = chatCommentsDto.getAppId();
|
|
|
|
|
// 获取模板文本
|
|
|
|
|
String text = commentsTemplate(chatCommentsDto);
|
|
|
|
|
if (!StringUtils.isEmpty(text)) {
|
|
|
|
|
chatCommentsDto.setText(text);
|
|
|
|
@ -300,29 +301,15 @@ public class ChatMessageServiceImpl implements ChatMessageService {
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
private String commentsTemplate(ChatCommentsDto chatCommentsDto) {
|
|
|
|
|
try {
|
|
|
|
|
StringBuilder builder = new StringBuilder();
|
|
|
|
|
String strData = JSON.toJSONString(chatCommentsDto.getData());
|
|
|
|
|
//检查是否角色
|
|
|
|
|
int phase = Math.max(chatCommentsDto.getPhase(), 0);
|
|
|
|
|
List<ChatModelDto> chatModels = new ArrayList<>();
|
|
|
|
|
ChatModelDto chatModel = null;
|
|
|
|
|
// 获取模型数据
|
|
|
|
|
chatModels = jsonLoader.myJsonDataBean();
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
//验证获取模型数据 异常问题
|
|
|
|
|
try {
|
|
|
|
|
String fileText = FileUtil.getFileText("Json/ChatModel.json");
|
|
|
|
|
String jsonData = JSON.toJSONString(fileText);
|
|
|
|
|
//获取聊天字段中的数据
|
|
|
|
|
Object obj = JSON.parseObject(jsonData).get("chatModel");
|
|
|
|
|
String jsonData01 = JSON.toJSONString(obj);
|
|
|
|
|
//转换方式
|
|
|
|
|
chatModels = JSON.parseObject(jsonData01, new TypeReference<List<ChatModelDto>>() {});
|
|
|
|
|
|
|
|
|
|
log.info("获取地址fileText:"+fileText+"----文件内容Data:"+ jsonData +"----获取模型集合Object:" + obj +"----获取模型集合String:"+ jsonData01 +"----获取模型集合机构:"+chatModels);
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
throw new ServiceException(ErrorCode.OPERATION_ERROR.getCode(), "读取文件" + Arrays.toString(e.getStackTrace()) + e.getMessage());
|
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
|
//循环查找对应的模型数据
|
|
|
|
|
for (ChatModelDto chatModelTemp : chatModels) {
|
|
|
|
|
//判断评语类型
|
|
|
|
@ -331,10 +318,30 @@ public class ChatMessageServiceImpl implements ChatMessageService {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
String chatName = "";
|
|
|
|
|
switch(phase){
|
|
|
|
|
case 1:
|
|
|
|
|
if (chatCommentsDto.getName().contains("班") || chatCommentsDto.getName().contains("班级")) {
|
|
|
|
|
chatName = chatCommentsDto.getName();
|
|
|
|
|
} else {
|
|
|
|
|
chatName = chatCommentsDto.getName()+"班级";
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
if (chatCommentsDto.getName().contains("年级")) {
|
|
|
|
|
chatName = chatCommentsDto.getName();
|
|
|
|
|
} else {
|
|
|
|
|
chatName = chatCommentsDto.getName()+"年级";
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
chatName = chatCommentsDto.getName()+"同学";
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (chatModel != null) {
|
|
|
|
|
//角色条件
|
|
|
|
|
builder.append(String.format(chatModel.getRole(), chatCommentsDto.getPeriod(), chatCommentsDto.getSubject()));
|
|
|
|
|
builder.append(String.format(chatModel.getRole().get(0), chatCommentsDto.getPeriod(), chatCommentsDto.getSubject(), chatName));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ChatModelDto finalChatModel = chatModel;
|
|
|
|
@ -354,10 +361,13 @@ public class ChatMessageServiceImpl implements ChatMessageService {
|
|
|
|
|
throw new ServiceException(ErrorCode.PARAMS_ERROR.getCode(), "请求参数异常");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String chat = phase > 0 ? finalChatModel.getChat().get(1) : finalChatModel.getChat().get(0);
|
|
|
|
|
String cycleChat = finalChatModel.getCycleChats().get(0);
|
|
|
|
|
|
|
|
|
|
// 使用String.format方法生成最终的字符串
|
|
|
|
|
builder.append(String.format(
|
|
|
|
|
finalChatModel.getChat(),
|
|
|
|
|
wisdomComments.getName(),
|
|
|
|
|
chat,
|
|
|
|
|
chatCommentsDto.getName(),
|
|
|
|
|
wisdomComments.getYear(),
|
|
|
|
|
wisdomComments.getSemester(),
|
|
|
|
|
wisdomComments.getJoinAll(),
|
|
|
|
@ -368,24 +378,10 @@ public class ChatMessageServiceImpl implements ChatMessageService {
|
|
|
|
|
wisdomComments.getProportion(),
|
|
|
|
|
wisdomComments.getName()
|
|
|
|
|
));
|
|
|
|
|
/*
|
|
|
|
|
//有平均分
|
|
|
|
|
builder.append(String.format(
|
|
|
|
|
finalChatModel.getChat(),
|
|
|
|
|
wisdomComments.getName(),
|
|
|
|
|
wisdomComments.getYear(),
|
|
|
|
|
wisdomComments.getSemester(),
|
|
|
|
|
wisdomComments.getJoinAll(),
|
|
|
|
|
wisdomComments.getLessonMiddle(),
|
|
|
|
|
wisdomComments.getOnLine(),
|
|
|
|
|
wisdomComments.getMarking(),
|
|
|
|
|
wisdomComments.getAverage(),
|
|
|
|
|
wisdomComments.getLevel(),
|
|
|
|
|
wisdomComments.getProportion(),
|
|
|
|
|
wisdomComments.getName()
|
|
|
|
|
));*/
|
|
|
|
|
wisdomComments.getDims().forEach(item -> {
|
|
|
|
|
builder.append(String.format(finalChatModel.getCycleChats().get(0),
|
|
|
|
|
if(item.data.length >= 4)
|
|
|
|
|
{
|
|
|
|
|
builder.append(String.format(cycleChat,
|
|
|
|
|
item.name,
|
|
|
|
|
item.data[0],
|
|
|
|
|
item.data[1],
|
|
|
|
@ -393,8 +389,9 @@ public class ChatMessageServiceImpl implements ChatMessageService {
|
|
|
|
|
item.data[3],
|
|
|
|
|
item.data[4]
|
|
|
|
|
));
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
builder.append(String.format(finalChatModel.getEnd(), wisdomComments.getName()));
|
|
|
|
|
//builder.append(String.format(finalChatModel.getEnd().get(0),chatName, wisdomComments.getDims().size()));
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
//智育 表现模版
|
|
|
|
@ -415,32 +412,54 @@ public class ChatMessageServiceImpl implements ChatMessageService {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
int count = 1;
|
|
|
|
|
if(finalChatModel.getChat() != null && !chatCommentsDto.getName().isEmpty()){
|
|
|
|
|
//昵称
|
|
|
|
|
builder.append(String.format(finalChatModel.getChat().get(0), chatCommentsDto.getName()));
|
|
|
|
|
}
|
|
|
|
|
switch(phase){
|
|
|
|
|
case 1:{
|
|
|
|
|
for (WisdomExamCommentsDto examComment : examComments) {
|
|
|
|
|
builder.append(String.format(finalChatModel.getCycleChats().get(1), count, examComment.getName(),examComment.getTime(), examComment.getClassRate(),examComment.getGradeRate()));
|
|
|
|
|
count++;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case 2:{
|
|
|
|
|
for (WisdomExamCommentsDto examComment : examComments) {
|
|
|
|
|
builder.append(String.format(finalChatModel.getCycleChats().get(2), count, examComment.getName(),examComment.getTime(), examComment.getGradeRate()));
|
|
|
|
|
count++;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
default:{
|
|
|
|
|
for (WisdomExamCommentsDto examComment : examComments) {
|
|
|
|
|
builder.append(String.format(finalChatModel.getCycleChats().get(0), count, examComment.getName(),
|
|
|
|
|
examComment.getTime(), examComment.getScore(), examComment.getScoreRate(),
|
|
|
|
|
examComment.getRanking()));
|
|
|
|
|
if (count < examComments.size()) {
|
|
|
|
|
builder.append(String.format(finalChatModel.getCycleChats().get(0), count, examComment.getName(),examComment.getTime(), examComment.getScore(), examComment.getScoreRate(),examComment.getRanking()));
|
|
|
|
|
count++;
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
builder.append(String.format(finalChatModel.getEnd(), count));
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
// 智育 学科评语模版
|
|
|
|
|
case "windomSubject": {
|
|
|
|
|
case "wisdomSubject": {
|
|
|
|
|
List<WisdomSubjectComments> subjectComments;
|
|
|
|
|
try {
|
|
|
|
|
subjectComments = JSON.parseObject(strData, new TypeReference<List<WisdomSubjectComments>>() {
|
|
|
|
|
});
|
|
|
|
|
subjectComments = JSON.parseObject(strData, new TypeReference<List<WisdomSubjectComments>>() {});
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
throw new ServiceException(ErrorCode.PARAMS_ERROR.getCode(), "请求参数异常");
|
|
|
|
|
}
|
|
|
|
|
if (subjectComments.size() <= 1) {
|
|
|
|
|
if (subjectComments.isEmpty()) {
|
|
|
|
|
throw new ServiceException(ErrorCode.PARAMS_ERROR.getCode(), "请求参数异常");
|
|
|
|
|
}
|
|
|
|
|
if(finalChatModel.getChat() != null && !chatCommentsDto.getName().isEmpty()){
|
|
|
|
|
builder.append(String.format(finalChatModel.getChat().get(1), chatCommentsDto.getName()));
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
if (finalChatModel.getChat() != null) {
|
|
|
|
|
builder.append(finalChatModel.getChat().get(0));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
builder.append(finalChatModel.getChat());
|
|
|
|
|
String name = "";
|
|
|
|
|
//拼接学科数组
|
|
|
|
|
for (WisdomSubjectComments comments : subjectComments) {
|
|
|
|
@ -448,10 +467,12 @@ public class ChatMessageServiceImpl implements ChatMessageService {
|
|
|
|
|
for (WisdomSubjectComments.StuInfo stuInfo : comments.getRankings()) {
|
|
|
|
|
builder.append(String.format(finalChatModel.getCycleChats().get(1), stuInfo.ranking,stuInfo.name, stuInfo.scoreRate*100));
|
|
|
|
|
}
|
|
|
|
|
if (phase == 0) {
|
|
|
|
|
name = comments.getClaasRanking().name;
|
|
|
|
|
builder.append(String.format(finalChatModel.getCycleChats().get(2),name,comments.getClaasRanking().ranking, comments.getClaasRanking().scoreRate * 100,comments.getClaasRanking().average * 100));
|
|
|
|
|
builder.append(String.format(finalChatModel.getCycleChats().get(2), name, comments.getClaasRanking().ranking, comments.getClaasRanking().scoreRate * 100, comments.getClaasRanking().average * 100));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
builder.append(String.format(finalChatModel.getEnd(), subjectComments.size(),name));
|
|
|
|
|
//builder.append(String.format(finalChatModel.getEnd().get(0), subjectComments.size(),chatName));
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
//艺术 考核指标纬度评语
|
|
|
|
@ -468,21 +489,25 @@ public class ChatMessageServiceImpl implements ChatMessageService {
|
|
|
|
|
throw new ServiceException(ErrorCode.PARAMS_ERROR.getCode(), "请求参数异常");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
builder.append(finalChatModel.getChat());
|
|
|
|
|
for (ArtLatitudeDto artLatitude : artLatitudes)
|
|
|
|
|
{
|
|
|
|
|
if(finalChatModel.getChat() != null && !chatCommentsDto.getName().isEmpty()) {
|
|
|
|
|
builder.append(String.format(finalChatModel.getChat().get(1), chatCommentsDto.getName()));
|
|
|
|
|
}else {
|
|
|
|
|
if (finalChatModel.getChat() != null) {
|
|
|
|
|
builder.append(finalChatModel.getChat().get(0));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
for (ArtLatitudeDto artLatitude : artLatitudes){
|
|
|
|
|
builder.append(String.format(finalChatModel.getCycleChats().get(0), artLatitude.getQuotaN1(),artLatitude.getQuotaP1(), artLatitude.getQuotaN2(),artLatitude.getQuotaP2(), artLatitude.getQuotaN3(),artLatitude.getQuotaP3(), artLatitude.getPercent(),artLatitude.getLevel()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
builder.append(finalChatModel.getEnd());
|
|
|
|
|
//builder.append(String.format(finalChatModel.getEnd().get(0),chatName));
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
//艺术 学科评语模版
|
|
|
|
|
case "artSubject":{
|
|
|
|
|
List<ArtSubjectDto> artSubjects;
|
|
|
|
|
try {
|
|
|
|
|
artSubjects = JSON.parseObject(strData, new TypeReference<List<ArtSubjectDto>>() {
|
|
|
|
|
});
|
|
|
|
|
artSubjects = JSON.parseObject(strData, new TypeReference<List<ArtSubjectDto>>() {});
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
throw new ServiceException(ErrorCode.PARAMS_ERROR.getCode(), "请求参数异常");
|
|
|
|
|
}
|
|
|
|
@ -491,12 +516,12 @@ public class ChatMessageServiceImpl implements ChatMessageService {
|
|
|
|
|
throw new ServiceException(ErrorCode.PARAMS_ERROR.getCode(), "请求参数异常");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
builder.append(finalChatModel.getChat());
|
|
|
|
|
builder.append(String.format(finalChatModel.getChat().get(0), chatCommentsDto.getSubject()));
|
|
|
|
|
for (ArtSubjectDto artSubject : artSubjects){
|
|
|
|
|
builder.append(String.format(finalChatModel.getCycleChats().get(0), artSubject.getDimension(),artSubject.getBlock(), artSubject.getPoint(),artSubject.getScore(), artSubject.getTotalScore(),artSubject.getPercent()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
builder.append(String.format(finalChatModel.getEnd(),chatCommentsDto.getSubject()));
|
|
|
|
|
//builder.append(String.format(finalChatModel.getEnd().get(0),chatName));
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
//体育
|
|
|
|
@ -511,21 +536,21 @@ public class ChatMessageServiceImpl implements ChatMessageService {
|
|
|
|
|
//德育
|
|
|
|
|
case "moral":{
|
|
|
|
|
builder.append(finalChatModel.getChat());
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
default:
|
|
|
|
|
throw new ServiceException(ErrorCode.PARAMS_ERROR.getCode(), "评语类型异常");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (chatCommentsDto.getSize() > 0) {
|
|
|
|
|
builder.append("字数限制在:")
|
|
|
|
|
.append(chatCommentsDto.getSize())
|
|
|
|
|
.append("字左右");
|
|
|
|
|
} else {
|
|
|
|
|
builder.append("字数限制在:200字左右");
|
|
|
|
|
}
|
|
|
|
|
String limitChat = "。限制条件如下:1.%s字左右;2.直接返回评价的内容;3.评价开头不要提示语;4.评价开头不允许出现特殊字符。";
|
|
|
|
|
int size = chatCommentsDto.getSize() > 0 ? chatCommentsDto.getSize() : 200;
|
|
|
|
|
builder.append(String.format(limitChat, size));
|
|
|
|
|
|
|
|
|
|
return builder.toString();
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
log.info(Arrays.toString(e.getStackTrace()));
|
|
|
|
|
log.error("{}-{}", e.getMessage(), Arrays.toString(e.getStackTrace()));
|
|
|
|
|
throw new ServiceException(ErrorCode.OPERATION_ERROR.getCode(), Arrays.toString(e.getStackTrace()));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|