Browse Source

Merge remote-tracking branch 'origin/dev' into dev

tags/B.2.2.0.6_20231012_base
yk 2 years ago
parent
commit
42fa485d39
2 changed files with 85 additions and 12 deletions
  1. +31
    -7
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/template/FreeChatTemplate.java
  2. +54
    -5
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/template/MeetingOrderTemplate.java

+ 31
- 7
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/template/FreeChatTemplate.java View File

@@ -1,5 +1,6 @@
package com.xueyi.nlt.nlt.template;

import com.alibaba.druid.util.StringUtils;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONException;
import com.alibaba.fastjson2.JSONObject;
@@ -37,21 +38,44 @@ public class FreeChatTemplate implements BaseTemplate{
redisTemplate.opsForList().leftPop(redisKey,2);
}
redisTemplate.opsForList().rightPush(redisKey,content);
List<String> context = redisTemplate.opsForList().range(redisKey,0,size);
size = redisTemplate.opsForList().size(redisKey);
List<String> context = redisTemplate.opsForList().range(redisKey,size-7,size);

String result = null;
webSocketClient.sendMsg(context);
try {
WebSocketClient.LOCK.wait();
String result = (String)redisTemplate.opsForValue().get("group:websocket:content");
redisTemplate.opsForList().rightPush(redisKey,result);
JSONObject resultJson = new JSONObject();
resultJson.put("msg",result);
return resultJson;
result = (String)redisTemplate.opsForValue().get("group:websocket:content");
} catch (InterruptedException e) {
log.warn(e.getMessage());
}

String[] blockedWord = {"科大讯飞", "认知模型", "抱歉"};
for(String a :blockedWord){
if(result.contains(a)){
result = "";
break;
}
}

String resultFinal = "";
//精简结果并赋予身份
if(!StringUtils.isEmpty(result)){
String promptBefore ="你需要完成的目标任务是:对我说的话进行总结。我的需求是:1、回答简短得体自然。50字以内。按照以上要求,我的输入是:";
String promptAfter = "";
webSocketClient.sendMsg(promptBefore + result + promptAfter);
try {
WebSocketClient.LOCK.wait();
resultFinal = (String)redisTemplate.opsForValue().get("group:websocket:content");
} catch (InterruptedException e) {
log.warn(e.getMessage());
}
}
redisTemplate.opsForList().rightPush(redisKey,resultFinal);
JSONObject resultJson = new JSONObject();
resultJson.put("msg",resultFinal);
return resultJson;
}
return null;
}

@Override


+ 54
- 5
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/template/MeetingOrderTemplate.java View File

@@ -46,6 +46,7 @@ import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
@@ -167,13 +168,14 @@ public class MeetingOrderTemplate implements BaseTemplate {
}

try {

//遍历roomListR.getData(),判断content中是否包含item.getName(),如果包含,则将item.getId()赋值给locationId
for (DmMeetingRoomsDto roomsDto : roomListR.getData()) {
List<DmMeetingRoomsDto> aaa = roomListR.getData().stream().sorted((x,y)->y.getName().length() - x.getName().length()).collect(Collectors.toList());
for (DmMeetingRoomsDto roomsDto : aaa) {
if (content.contains(roomsDto.getName())) {
// 更新session中的locationId与location
session.getFormat().put("location",roomsDto.getName());
session.getFormat().put("locationId",roomsDto.getId());
content = content.replace(roomsDto.getName(), "啊啊啊");
break;
}
}
@@ -183,15 +185,62 @@ public class MeetingOrderTemplate implements BaseTemplate {
if (dateSession != null ){
session = dateSession;
}
//判断是否击中持续时间的正则
boolean flag = false;
String[] chinese = {"一","二","三","四","五","六","七","八"};
for(int i=1;i<=8;i++){
if(flag){
break;
}
String a = String.format("%d小时", i);
String b = String.format("%s个小时", chinese[i-1]);
if(content.contains(a)||content.contains(b)){
session.getFormat().put("duration", i * 60);
content = content.replace(a, "啊啊啊");
content = content.replace(b, "啊啊啊");
flag = true;
break;
}
}
for(int i=1;i<8;i++){
if(flag){
break;
}
if(content.contains(String.format("%s个半小时", chinese[i-1]))){
session.getFormat().put("duration", i * 60 +30);
content = content.replace(String.format("%s个半小时", chinese[i-1]), "啊啊啊");
flag = true;
break;
}
}
if(!flag && content.contains("半小时")){
session.getFormat().put("duration",30);
}
String[] intentList = {"例会","访客接待","面试","其他"};
for(String a: intentList){
if(content.contains(a)){
session.getFormat().put("meetingIntent", a);
break;
}
}
//判断会议室是否冲突,如果冲突,删除时间
JSONObject checkObject = session.getFormat();
if (checkObject.containsKey("date") && checkObject.containsKey("time") && checkObject.containsKey("location")) {
JSONObject ret = remoteMeetingService.queryExist(checkObject.getLong("locationId"), checkObject.getString("date"), checkObject.getString("time"),tenantId,source.getMaster(), SecurityConstants.INNER);
if (checkObject.containsKey("date") && checkObject.containsKey("start_time") && checkObject.containsKey("location") && checkObject.containsKey("duration")) {
JSONObject ret= remoteMeetingService.queryExistOrder(checkObject.getLong("locationId"), checkObject.getString("date"), checkObject.getString("start_time"),checkObject.getInteger("duration"),tenantId,source.getMaster(), SecurityConstants.INNER);
if (StringUtils.isNotEmpty(ret.getString("err"))) {
// 会议室冲突,删除时间
session.getFormat().remove("time");
session.getFormat().remove("duration");
}
}

//判断是否为确认或取消指令
checkObject = session.getFormat();
if(checkObject.containsKey("date") && checkObject.containsKey("start_time") && checkObject.containsKey("location") && checkObject.containsKey("duration") && content.contains("确认")){
session.getFormat().put("confirm", 1);
}
if(content.contains("取消")){
session.getFormat().put("confirm", 0);
}
// redis缓存更新session
objectRedisTemplate.opsForValue().set("group:device" + ":" + devId + ":" +"session", session, 1,TimeUnit.MINUTES);
session.getFormat().put("skillCode", SkillConstants.SkillType.BOOK_MEETING_ROOM.getCode());


Loading…
Cancel
Save