3 次代码提交

作者 SHA1 备注 提交日期
  10710 7c85819923 修改 1年前
  10710 865a2a6219 修改 1年前
  kira ffe1be639d yinruoxi 1年前
共有 24 个文件被更改,包括 718 次插入109 次删除
  1. +2
    -2
      xueyi-api/xueyi-api-nlt/src/main/java/com/xueyi/nlt/api/nlt/feign/RemoteIntentService.java
  2. +27
    -43
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/controller/DmIntentController.java
  3. +144
    -0
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/controller/DmPromptController.java
  4. +54
    -0
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/domain/dto/DmPromptDto.java
  5. +41
    -0
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/domain/merge/DmPromptParamMerge.java
  6. +17
    -0
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/domain/model/DmPromptConverter.java
  7. +51
    -0
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/domain/po/DmPromptPo.java
  8. +20
    -0
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/domain/query/DmPromptQuery.java
  9. +21
    -0
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/manager/IDmPromptManager.java
  10. +58
    -0
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/manager/impl/DmPromptManager.java
  11. +16
    -0
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/mapper/DmPromptMapper.java
  12. +14
    -0
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/mapper/merge/DmPromptParamMergeMapper.java
  13. +10
    -2
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/IDmHotspotService.java
  14. +14
    -0
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/IDmPromptService.java
  15. +52
    -9
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/impl/DmHotspotServiceImpl.java
  16. +45
    -0
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/impl/DmPromptServiceImpl.java
  17. +21
    -32
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/template/FreeChatTemplate.java
  18. +18
    -4
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/template/GenerativeKnowledgeTemplate.java
  19. +22
    -9
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/template/GenerativeWelcomeTemplate.java
  20. +8
    -7
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/template/MovieChatTemplate.java
  21. +10
    -0
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/digitalmans/controller/DmQAndAController.java
  22. +2
    -0
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/digitalmans/domain/dto/DmQAndADto.java
  23. +4
    -0
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/digitalmans/service/IDmQAndAService.java
  24. +47
    -1
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/digitalmans/service/impl/DmQAndAServiceImpl.java

+ 2
- 2
xueyi-api/xueyi-api-nlt/src/main/java/com/xueyi/nlt/api/nlt/feign/RemoteIntentService.java 查看文件

@@ -31,9 +31,9 @@ public interface RemoteIntentService {
@PostMapping("/intent/inner/generateContextTask")
public AjaxResult generateContextTask();

@PostMapping("/intent/inner/syncHotspot")
@PostMapping("/intent/syncHotspot")
public AjaxResult syncHotspot();

@PostMapping("/intent/inner/collectHotspot")
@PostMapping("/intent/collectHotspot")
public AjaxResult collectHotspot(@RequestBody List<HotspotVo> hotspotVo);
}

+ 27
- 43
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/controller/DmIntentController.java 查看文件

@@ -38,15 +38,13 @@ import com.xueyi.nlt.nlt.domain.LlmContext;
import com.xueyi.nlt.nlt.domain.LlmParam;
import com.xueyi.nlt.nlt.domain.LlmResponse;
import com.xueyi.nlt.nlt.domain.dto.DmIntentDto;
import com.xueyi.nlt.nlt.domain.dto.DmPromptDto;
import com.xueyi.nlt.nlt.domain.dto.DmSensitiveWordDto;
import com.xueyi.nlt.nlt.domain.po.DmRegularPo;
import com.xueyi.nlt.nlt.domain.query.DmIntentQuery;
import com.xueyi.nlt.nlt.domain.vo.*;
import com.xueyi.nlt.nlt.mapper.DmRegularMapper;
import com.xueyi.nlt.nlt.service.IDmHotspotService;
import com.xueyi.nlt.nlt.service.IDmIntentService;
import com.xueyi.nlt.nlt.service.ISensitiveService;
import com.xueyi.nlt.nlt.service.ISysLlmService;
import com.xueyi.nlt.nlt.service.*;
import com.xueyi.nlt.nlt.service.impl.DmSensitiveWordServiceImpl;
import com.xueyi.nlt.nlt.template.*;
import com.xueyi.system.api.digitalmans.domain.dto.DmManDeviceDto;
@@ -1122,25 +1120,6 @@ public class DmIntentController extends BaseController<DmIntentQuery, DmIntentDt
return AjaxResult.error(res);
}

@PostMapping("/api/testforwelcome")
public AjaxResult test(){
LocalDateTime dateTime = LocalDateTime.now();
String date = dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
JSONObject jo = generativeWelcomeTemplate.handle("1", "");
JSONArray ja = jo.getJSONArray("data");
Long timeStamp = System.currentTimeMillis();
JSONObject timeJson = new JSONObject();
timeJson.put("timestamp", timeStamp);
ja.add(timeJson);
log.info(ja.toJSONString());
redisTemplate2.opsForHash().put("group:task" + ":generate", date, AjaxResult.success(ja).toJson().toJSONString());
Map<Object, Object> devices = redisTemplate2.opsForHash().entries("group:dgman:device:");
for(Object devId:devices.keySet()){
mqttTemplate.sendToMqtt("/" + activeProfile + "/" + "digital_man" + "/" + devId.toString() + "/" + "notify" + "/" + "generate-welcome", true, AjaxResult.success(ja).toJson().toJSONString());
}
return AjaxResult.success();
}

@PostMapping("/inner/generateContextTask")
@ResponseBody
public AjaxResult generateContextTask() {
@@ -1166,38 +1145,43 @@ public class DmIntentController extends BaseController<DmIntentQuery, DmIntentDt
log.error("生成任务失败:{}",e.getMessage());
return AjaxResult.error("生成任务失败");
}
return success();
return AjaxResult.success();
}

@PostMapping("/inner/syncHotspot")
@PostMapping("/syncHotspot")
@ResponseBody
public AjaxResult syncHotspot(){
return dmHotspotService.syncHotspot();
}

@PostMapping("/inner/collectHotspot")
@ResponseBody
public AjaxResult collectHotspot(@RequestBody List<HotspotVo> hotspotVo){
return dmHotspotService.collectHotspot(hotspotVo);
Integer result = dmHotspotService.syncHotspot();
if(result.equals(0)){
return AjaxResult.success("同步成功");
}else {
return AjaxResult.error("同步失败");
}
}

@PostMapping("/api/updateHotspot")
@PostMapping("/collectHotspot")
@ResponseBody
public AjaxResult updateHotspot(@RequestBody JSONObject hotspotData){
if(hotspotData == null||hotspotData.isEmpty()||!hotspotData.containsKey("data")){
return AjaxResult.error("上传热点新闻失败");
public AjaxResult collectHotspot(){
Integer result = dmHotspotService.collectHotspot();
if(result.equals(0)){
return AjaxResult.success("热点收集成功");
}else {
return AjaxResult.error("热点收集失败");
}
log.info(hotspotData.getString("data"));
List<HotspotVo> hotspotVoList = hotspotData.getList("data",HotspotVo.class);
return dmHotspotService.collectHotspot(hotspotVoList);
}

@PostMapping("/api/testForHotspot")
public AjaxResult testForHotspot(){
return dmHotspotService.syncHotspot();
@PostMapping("/api/test")
@ResponseBody
public String collectHotspotApi(@RequestBody String query){
String result = dmHotspotService.generateHotspotPrompt(query);
JSONObject a = freeChatTemplate.handle("-1", query);
JSONObject b = freeChatTemplate.handle("-1", query, true);
JSONArray c = new JSONArray();
c.add(a);
c.add(b);
return c.toJSONString();
}


interface Auth {
/** 系统 - 意图管理
管理 - 列表 */


+ 144
- 0
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/controller/DmPromptController.java 查看文件

@@ -0,0 +1,144 @@
package com.xueyi.nlt.nlt.controller;

import cn.hutool.core.util.IdUtil;
import com.xueyi.common.core.web.result.AjaxResult;
import com.xueyi.common.core.web.validate.V_A;
import com.xueyi.common.core.web.validate.V_E;
import com.xueyi.common.log.annotation.Log;
import com.xueyi.common.log.enums.BusinessType;
import com.xueyi.common.security.annotation.Logical;
import com.xueyi.common.security.annotation.RequiresPermissions;
import com.xueyi.common.web.entity.controller.BaseController;
import com.xueyi.nlt.nlt.domain.dto.DmPromptDto;
import com.xueyi.nlt.nlt.domain.query.DmPromptQuery;
import com.xueyi.nlt.nlt.service.IDmPromptService;
import org.springframework.cloud.commons.util.IdUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletResponse;
import java.io.Serializable;
import java.util.List;

/**
* 提示词管理管理 业务处理
*
* @author xueyi
*/
@RestController
@RequestMapping("/prompt")
public class DmPromptController extends BaseController<DmPromptQuery, DmPromptDto, IDmPromptService> {

/** 定义节点名称 */
@Override
protected String getNodeName() {
return "提示词管理" ;
}

/**
* 查询提示词管理列表
*/
@Override
@GetMapping("/list")
@RequiresPermissions(Auth.DM_PROMPT_LIST)
public AjaxResult list(DmPromptQuery prompt) {
return super.list(prompt);
}

/**
* 查询提示词管理详细
*/
@Override
@GetMapping(value = "/{id}")
@RequiresPermissions(Auth.DM_PROMPT_SINGLE)
public AjaxResult getInfo(@PathVariable Serializable id) {
return super.getInfo(id);
}

/**
* 提示词管理导出
*/
@Override
@PostMapping("/export")
@RequiresPermissions(Auth.DM_PROMPT_EXPORT)
@Log(title = "提示词管理管理", businessType = BusinessType.EXPORT)
public void export(HttpServletResponse response, DmPromptQuery prompt) {
super.export(response, prompt);
}

/**
* 提示词管理新增
*/
@Override
@PostMapping
@RequiresPermissions(Auth.DM_PROMPT_ADD)
@Log(title = "提示词管理管理", businessType = BusinessType.INSERT)
public AjaxResult add(@Validated({V_A.class}) @RequestBody DmPromptDto prompt) {
return super.add(prompt);
}

/**
* 提示词管理修改
*/
@Override
@PutMapping
@RequiresPermissions(Auth.DM_PROMPT_EDIT)
@Log(title = "提示词管理管理", businessType = BusinessType.UPDATE)
public AjaxResult edit(@Validated({V_E.class}) @RequestBody DmPromptDto prompt) {
return super.edit(prompt);
}

/**
* 提示词管理修改状态
*/
@Override
@PutMapping("/status")
@RequiresPermissions(value = {Auth.DM_PROMPT_EDIT, Auth.DM_PROMPT_ES}, logical = Logical.OR)
@Log(title = "提示词管理管理", businessType = BusinessType.UPDATE_STATUS)
public AjaxResult editStatus(@RequestBody DmPromptDto prompt) {
return super.editStatus(prompt);
}

/**
* 提示词管理批量删除
*/
@Override
@DeleteMapping("/batch/{idList}")
@RequiresPermissions(Auth.DM_PROMPT_DEL)
@Log(title = "提示词管理管理", businessType = BusinessType.DELETE)
public AjaxResult batchRemove(@PathVariable List<Long> idList) {
return super.batchRemove(idList);
}

/**
* 获取提示词管理选择框列表
*/
@Override
@GetMapping("/option")
public AjaxResult option() {
return super.option();
}

interface Auth {
/** 系统 - 提示词管理管理 - 列表 */
String DM_PROMPT_LIST = "nlt:prompt:list";
/** 系统 - 提示词管理管理 - 详情 */
String DM_PROMPT_SINGLE = "nlt:prompt:single";
/** 系统 - 提示词管理管理 - 新增 */
String DM_PROMPT_ADD = "nlt:prompt:add";
/** 系统 - 提示词管理管理 - 修改 */
String DM_PROMPT_EDIT = "nlt:prompt:edit";
/** 系统 - 提示词管理管理 - 修改状态 */
String DM_PROMPT_ES = "nlt:prompt:es";
/** 系统 - 提示词管理管理 - 删除 */
String DM_PROMPT_DEL = "nlt:prompt:delete";
/** 系统 - 提示词管理管理 - 导出 */
String DM_PROMPT_EXPORT = "nlt:prompt:export";
/** 系统 - 提示词管理管理 - 缓存 */
String DM_PROMPT_CACHE = "nlt:prompt:cache";
}

public static void main(String[] args) {
System.out.println(IdUtil.getSnowflakeNextId());
}
}

+ 54
- 0
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/domain/dto/DmPromptDto.java 查看文件

@@ -0,0 +1,54 @@
package com.xueyi.nlt.nlt.domain.dto;

import com.alibaba.fastjson2.JSONArray;
import com.xueyi.nlt.nlt.domain.merge.DmPromptParamMerge;
import com.xueyi.nlt.nlt.domain.po.DmPromptPo;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serial;
import java.util.List;

/**
* 提示词管理 数据传输对象
*
* @author xueyi
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class DmPromptDto extends DmPromptPo {

@Serial
private static final long serialVersionUID = 1L;

protected List<DmPromptParamMerge> paramList;

/**
* 拼接获取好的提示词
*/
public String getPrompt(List<String> params) {
StringBuilder prompt = new StringBuilder();
prompt.append(this.getPrefix());
if (params != null && paramList != null && paramList.size() == params.size()) {
for (int i = 0; i < paramList.size(); i++) {
if(params.get(i) != null && !"".equals(params.get(i))){
prompt.append(formatStr(paramList.get(i).getPrefix()) + formatStr(params.get(i)) + formatStr(paramList.get(i).getSuffix()));
}
}
}
prompt.append(this.getSuffix());
return prompt.toString();
}

/**
* 格式化字符串
* @param str
* @return
*/
private String formatStr(String str) {
if (str == null) {
return "";
}
return str;
}
}

+ 41
- 0
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/domain/merge/DmPromptParamMerge.java 查看文件

@@ -0,0 +1,41 @@
package com.xueyi.nlt.nlt.domain.merge;

import com.baomidou.mybatisplus.annotation.*;
import com.xueyi.common.core.web.entity.base.BasisEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.io.Serial;

/**
* 提示词-参数关系 持久化对象
*
* @author xueyi
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName("dm_prompt_param_merge")
public class DmPromptParamMerge extends BasisEntity {

@Serial
private static final long serialVersionUID = 1L;

/** id */
@TableId
protected Long id;

/** 提示词id */
protected Long promptId;

/** 前置词 */
protected String prefix;

/** 后置词 */
protected String suffix;

/** 排序顺序 */
protected Integer orders;

}

+ 17
- 0
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/domain/model/DmPromptConverter.java 查看文件

@@ -0,0 +1,17 @@
package com.xueyi.nlt.nlt.domain.model;

import com.xueyi.common.core.web.entity.model.BaseConverter;
import com.xueyi.nlt.nlt.domain.dto.DmPromptDto;
import com.xueyi.nlt.nlt.domain.po.DmPromptPo;
import com.xueyi.nlt.nlt.domain.query.DmPromptQuery;
import org.mapstruct.Mapper;
import org.mapstruct.MappingConstants;

/**
* 提示词管理 对象映射器
*
* @author xueyi
*/
@Mapper(componentModel = MappingConstants.ComponentModel.SPRING)
public interface DmPromptConverter extends BaseConverter<DmPromptQuery, DmPromptDto, DmPromptPo> {
}

+ 51
- 0
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/domain/po/DmPromptPo.java 查看文件

@@ -0,0 +1,51 @@
package com.xueyi.nlt.nlt.domain.po;

import com.xueyi.common.core.web.entity.base.BaseEntity;
import com.xueyi.nlt.nlt.domain.dto.DmPromptDto;
import com.xueyi.common.core.annotation.Excel;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serial;
import java.io.StringReader;


/**
* 提示词管理 持久化对象
*
* @author xueyi
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("dm_prompt")
public class DmPromptPo extends BaseEntity {

@Serial
private static final long serialVersionUID = 1L;

/** 前置词 */
@Excel(name = "前置词")
protected String prefix;

/** 后置词 */
@Excel(name = "后置词")
protected String suffix;

/** 状态(0:使用;1:停用) */
@Excel(name = "状态", readConverterExp = "0=:使用;1:停用")
protected String status;

/** 备注 */
@Excel(name = "备注")
protected String remark;

/** 角色 */
@Excel(name = "角色")
protected String role;

/** 错误消息 */
@Excel(name = "错误消息")
protected String errMsg;

}

+ 20
- 0
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/domain/query/DmPromptQuery.java 查看文件

@@ -0,0 +1,20 @@
package com.xueyi.nlt.nlt.domain.query;

import com.xueyi.nlt.nlt.domain.po.DmPromptPo;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serial;

/**
* 提示词管理 数据查询对象
*
* @author xueyi
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class DmPromptQuery extends DmPromptPo {

@Serial
private static final long serialVersionUID = 1L;
}

+ 21
- 0
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/manager/IDmPromptManager.java 查看文件

@@ -0,0 +1,21 @@
package com.xueyi.nlt.nlt.manager;

import com.xueyi.nlt.nlt.domain.dto.DmPromptDto;
import com.xueyi.nlt.nlt.domain.query.DmPromptQuery;
import com.xueyi.common.web.entity.manager.IBaseManager;

/**
* 提示词管理管理 数据封装层
*
* @author xueyi
*/
public interface IDmPromptManager extends IBaseManager<DmPromptQuery, DmPromptDto> {

/**
* 根据提示词模板名称查询提示词管理对象 | 数据权限
*
* @param name 提示词模板名称
* @return 提示词对象
*/
DmPromptDto selectByName(String name);
}

+ 58
- 0
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/manager/impl/DmPromptManager.java 查看文件

@@ -0,0 +1,58 @@
package com.xueyi.nlt.nlt.manager.impl;

import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.xueyi.nlt.nlt.domain.merge.DmPromptParamMerge;
import com.xueyi.nlt.nlt.domain.po.DmIntentPo;
import com.xueyi.nlt.nlt.domain.po.DmPromptPo;
import com.xueyi.nlt.nlt.domain.dto.DmPromptDto;
import com.xueyi.nlt.nlt.domain.query.DmPromptQuery;
import com.xueyi.nlt.nlt.domain.model.DmPromptConverter;
import com.xueyi.nlt.nlt.mapper.DmIntentMapper;
import com.xueyi.nlt.nlt.mapper.DmPromptMapper;
import com.xueyi.common.web.entity.manager.impl.BaseManagerImpl;
import com.xueyi.nlt.nlt.manager.IDmPromptManager;
import com.xueyi.nlt.nlt.mapper.merge.DmPromptParamMergeMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.sql.Wrapper;

/**
* 提示词管理管理 数据封装层处理
*
* @author xueyi
*/
@Component
public class DmPromptManager extends BaseManagerImpl<DmPromptQuery, DmPromptDto, DmPromptPo, DmPromptMapper, DmPromptConverter> implements IDmPromptManager {

@Autowired
DmPromptParamMergeMapper dmPromptParamMergeMapper;

@Autowired
DmIntentMapper dmIntentMapper;

/**
* 根据提示词模板名称查询提示词管理对象 | 数据权限
*
* @param name 提示词模板名称
* @return 提示词对象
*/
@Override
public DmPromptDto selectByName(String name) {
DmPromptQuery prompt = new DmPromptQuery();
prompt.setName(name);
// 根据name字段查询dto
DmPromptPo po = baseMapper.selectOne(Wrappers.<DmPromptPo>query().lambda().eq(DmPromptPo::getName, name));
if (po != null) {
// 转化成dto对象
DmPromptDto dto = baseConverter.mapperDto(po);
// 根据order顺序获取DmPromptParamMerge对象列表
dto.setParamList(dmPromptParamMergeMapper.selectList(Wrappers.<DmPromptParamMerge>query().lambda().eq(DmPromptParamMerge::getPromptId, dto.getId()).orderByAsc(DmPromptParamMerge::getOrders)));
return dto;
} else {
return null;
}

}

}

+ 16
- 0
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/mapper/DmPromptMapper.java 查看文件

@@ -0,0 +1,16 @@
package com.xueyi.nlt.nlt.mapper;

import com.xueyi.nlt.nlt.domain.query.DmPromptQuery;
import com.xueyi.nlt.nlt.domain.dto.DmPromptDto;
import com.xueyi.nlt.nlt.domain.po.DmPromptPo;
import com.xueyi.common.web.entity.mapper.BaseMapper;
import com.xueyi.common.datasource.annotation.Master;

/**
* 提示词管理管理 数据层
*
* @author xueyi
*/
@Master
public interface DmPromptMapper extends BaseMapper<DmPromptQuery, DmPromptDto, DmPromptPo> {
}

+ 14
- 0
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/mapper/merge/DmPromptParamMergeMapper.java 查看文件

@@ -0,0 +1,14 @@
package com.xueyi.nlt.nlt.mapper.merge;

import com.xueyi.common.datasource.annotation.Master;
import com.xueyi.common.web.entity.mapper.BasicMapper;
import com.xueyi.nlt.nlt.domain.merge.DmPromptParamMerge;

/**
* 提示词-参数关系 数据层
*
* @author xueyi
*/
@Master
public interface DmPromptParamMergeMapper extends BasicMapper<DmPromptParamMerge> {
}

+ 10
- 2
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/IDmHotspotService.java 查看文件

@@ -7,7 +7,15 @@ import java.util.List;


public interface IDmHotspotService {
public AjaxResult syncHotspot();
//向数字人下发热点
public Integer syncHotspot();

public AjaxResult collectHotspot(List<HotspotVo> hotspotVo);
//生成热点
public Integer collectHotspot();

//查询热点
public String retrievalHotspot(String content);

//生成相应的提示词
public String generateHotspotPrompt(String content);
}

+ 14
- 0
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/IDmPromptService.java 查看文件

@@ -0,0 +1,14 @@
package com.xueyi.nlt.nlt.service;

import com.xueyi.nlt.nlt.domain.query.DmPromptQuery;
import com.xueyi.nlt.nlt.domain.dto.DmPromptDto;
import com.xueyi.common.web.entity.service.IBaseService;

/**
* 提示词管理管理 服务层
*
* @author xueyi
*/
public interface IDmPromptService extends IBaseService<DmPromptQuery, DmPromptDto> {
DmPromptDto selectByName(String name);
}

+ 52
- 9
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/impl/DmHotspotServiceImpl.java 查看文件

@@ -5,7 +5,11 @@ import com.alibaba.fastjson2.JSONObject;
import com.xueyi.common.core.web.result.AjaxResult;
import com.xueyi.common.mqtt.connection.MqttTemplate;
import com.xueyi.nlt.api.nlt.domain.vo.HotspotVo;
import com.xueyi.nlt.api.nlt.domain.vo.KnowledgeVo;
import com.xueyi.nlt.api.nlt.feign.RemoteQAService;
import com.xueyi.nlt.nlt.domain.dto.DmPromptDto;
import com.xueyi.nlt.nlt.service.IDmHotspotService;
import com.xueyi.nlt.nlt.service.IDmPromptService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -16,6 +20,7 @@ import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

@@ -31,11 +36,17 @@ public class DmHotspotServiceImpl implements IDmHotspotService {
@Autowired
MqttTemplate mqttTemplate;

@Autowired
private RemoteQAService remoteQAService;

@Autowired
private IDmPromptService dmPromptService;

@Value("${spring.profiles.active}")
private String activeProfile;

@Override
public AjaxResult syncHotspot() {
public Integer syncHotspot() {
LocalDateTime dateTime = LocalDateTime.now();
String date = dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
String result = (String) redisTemplate.opsForHash().get("group:task:hotspot", date);
@@ -46,16 +57,48 @@ public class DmHotspotServiceImpl implements IDmHotspotService {
for(Object devId:devices.keySet()){
mqttTemplate.sendToMqtt("/" + activeProfile + "/" + "digital_man" + "/" + devId.toString() + "/" + "notify" + "/" + "generate-hotspot", true, AjaxResult.success(resultArray).toJson().toJSONString());
}
return AjaxResult.success();
return 0;
}

@Override
public AjaxResult collectHotspot(List<HotspotVo> hotspotVoList) {
LocalDateTime dateTime = LocalDateTime.now();
String date = dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
Long timestamp = System.currentTimeMillis();
hotspotVoList.stream().forEach(hotspotVo -> hotspotVo.setTimestamp(timestamp));
redisTemplate.opsForHash().put("group:task:hotspot", date, JSONArray.from(hotspotVoList).toJSONString());
return AjaxResult.success();
public Integer collectHotspot() {
//Todo 通过智谱大模型收集热点,并保存到redis中。
return 0;
}

@Override
public String retrievalHotspot(String content) {
KnowledgeVo vo = new KnowledgeVo();
String result = "";
vo.setQuestion(content);
AjaxResult hotspotResult = remoteQAService.searchHotspot(vo);
log.info("hotspotResult:{}",hotspotResult);
if(hotspotResult.get("data") == null){
return "";
}
try{
List<HotspotVo> voList = hotspotResult.toJson().getList("data", HotspotVo.class);
StringBuilder prompt = new StringBuilder();
for(HotspotVo hotspotVo:voList){
prompt.append(hotspotVo.getContent());
prompt.append("\n");
}
result = prompt.toString();
}catch (Exception e){
log.error("查询热点词失败",e);
return "";
}
log.info("result:{}",result);
return result;
}

@Override
public String generateHotspotPrompt(String content) {
String result = retrievalHotspot(content);
DmPromptDto dmPromptDto = dmPromptService.selectByName("hotspot-chat");
List<String> promptList = new ArrayList<>();
promptList.add(result);
promptList.add(content);
return dmPromptDto.getPrompt(promptList);
}
}

+ 45
- 0
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/impl/DmPromptServiceImpl.java 查看文件

@@ -0,0 +1,45 @@
package com.xueyi.nlt.nlt.service.impl;

import com.xueyi.nlt.nlt.domain.dto.DmPromptDto;
import com.xueyi.nlt.nlt.domain.query.DmPromptQuery;
import com.xueyi.nlt.nlt.service.IDmPromptService;
import com.xueyi.nlt.nlt.manager.IDmPromptManager;
import com.xueyi.common.web.entity.service.impl.BaseServiceImpl;
import org.springframework.stereotype.Service;

import java.util.List;

/**
* 提示词管理管理 服务层处理
*
* @author xueyi
*/
@Service
public class DmPromptServiceImpl extends BaseServiceImpl<DmPromptQuery, DmPromptDto, IDmPromptManager> implements IDmPromptService {



/**
* 查询提示词管理对象列表 | 数据权限
*
* @param prompt 提示词管理对象
* @return 提示词管理对象集合
*/
@Override
//@DataScope(userAlias = "createBy", mapperScope = {"DmPromptMapper"})
public List<DmPromptDto> selectListScope(DmPromptQuery prompt) {
return baseManager.selectList(prompt);
}

/**
* 根据提示词模板名称查询提示词管理对象 | 数据权限
*
* @param name 提示词模板名称
* @return 提示词对象
*/
@Override
public DmPromptDto selectByName(String name) {
return baseManager.selectByName(name);
}

}

+ 21
- 32
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/template/FreeChatTemplate.java 查看文件

@@ -11,6 +11,9 @@ import com.xueyi.nlt.nlt.context.TerminalSecurityContextHolder;
import com.xueyi.nlt.nlt.domain.LlmContext;
import com.xueyi.nlt.nlt.domain.LlmParam;
import com.xueyi.nlt.nlt.domain.LlmResponse;
import com.xueyi.nlt.nlt.domain.dto.DmPromptDto;
import com.xueyi.nlt.nlt.service.IDmHotspotService;
import com.xueyi.nlt.nlt.service.IDmPromptService;
import com.xueyi.nlt.nlt.service.ISysLlmService;
import com.yomahub.tlog.core.annotation.TLogAspect;
import org.slf4j.Logger;
@@ -36,9 +39,15 @@ public class FreeChatTemplate implements BaseTemplate{
@Autowired
private RedisTemplate<String,String> redisTemplate;

@Autowired
private IDmPromptService dmPromptService;

@Autowired
private RemoteQAService remoteQAService;

@Autowired
private IDmHotspotService dmHotspotService;

private Map<String,String> correctWordsMap = new HashMap<>();

// 中航信领导来访临时对策
@@ -60,10 +69,13 @@ public class FreeChatTemplate implements BaseTemplate{
redisTemplate.opsForList().leftPop(redisKey,2);
}
size = redisTemplate.opsForList().size(redisKey);

// 获取prompt对象
DmPromptDto promptDto = dmPromptService.selectByName("free-chat");
List<String> context = new ArrayList<>();
context.add("你是缔智元公司的前台,你叫小智,你是一位数字人。");
context.add(promptDto.getRole());
context.addAll(redisTemplate.opsForList().range(redisKey,size-6,size));
content = generatePrompts(content);
content = promptDto.getPrefix() + content + promptDto.getSuffix();
context.add(content);

//webSocketClient.sendMsg(context);
@@ -104,8 +116,11 @@ public class FreeChatTemplate implements BaseTemplate{
redisTemplate.opsForList().leftPop(redisKey,2);
}
size = redisTemplate.opsForList().size(redisKey);
// 获取prompt对象
DmPromptDto promptDto = dmPromptService.selectByName("hotspot-chat");

List<String> context = new ArrayList<>();
context.add("你是缔智元公司的前台,你叫小智,你是一位数字人,你们公司在北京,你的职能是负责做会议预定和访客预约。");
context.add(promptDto.getRole());
// 中航信领导来访临时对策
// 判断如果content包含correctWordsMap中的key,则替换为value
for (String key : correctWordsMap.keySet()) {
@@ -115,7 +130,7 @@ public class FreeChatTemplate implements BaseTemplate{
}

//context.addAll(redisTemplate.opsForList().range(redisKey,size-2,size));
content = generatePrompts(content);
content = dmHotspotService.generateHotspotPrompt(content);
context.add(content);
//使用stream去除context列表中所有字符串中的引号
context = context.stream().map(s -> s.replaceAll("\"", "")).collect(java.util.stream.Collectors.toList());
@@ -140,38 +155,12 @@ public class FreeChatTemplate implements BaseTemplate{
return null;
}

private String addHotspot(String content) {
KnowledgeVo vo = new KnowledgeVo();
String result = "";
vo.setQuestion(content);
AjaxResult hotspotResult = remoteQAService.searchHotspot(vo);
log.info("hotspotResult:{}",hotspotResult);
if(hotspotResult.get("data") == null){
return result;
}
try{
List<String> hotspotList = (List<String>) hotspotResult.get("data");
for(String hotspot : hotspotList){
result = result + hotspot + "\n";
if(result.length() >= 1000){
break;
}
}
//去除末尾的换行符

}catch (Exception e){
log.error("查询热点词失败",e);
return result;
}
return result;
}

private String generatePrompts(String content){
String msg = addHotspot(content);
String msg = content;
if(msg.equals("")){
return "请用简短的话回答下面的问题:" + content;
}
String result = "根据下面的信息:'''\n" + msg + "\n'''请用简短的话回答下面的问题:" + content;
String result = "根据下面的信息:'''\n" + msg + "\n'''请用简短的话回答下面的问题:" + content;
return result;
}
}

+ 18
- 4
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/template/GenerativeKnowledgeTemplate.java 查看文件

@@ -7,6 +7,8 @@ import com.xueyi.nlt.netty.client.WebSocketClientManager;
import com.xueyi.nlt.nlt.domain.LlmContext;
import com.xueyi.nlt.nlt.domain.LlmParam;
import com.xueyi.nlt.nlt.domain.LlmResponse;
import com.xueyi.nlt.nlt.domain.dto.DmPromptDto;
import com.xueyi.nlt.nlt.service.IDmPromptService;
import com.xueyi.nlt.nlt.service.ISysLlmService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -14,6 +16,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;


@Service("generative-knowledge")
public class GenerativeKnowledgeTemplate implements BaseTemplate{
@@ -25,17 +30,26 @@ public class GenerativeKnowledgeTemplate implements BaseTemplate{
@Autowired
private ISysLlmService sysLlmService;

@Autowired
private IDmPromptService dmPromptService;

@Autowired
private RedisTemplate<String,String> redisTemplate;

@Override
public JSONObject handle(String devId, String content) {
JSONObject jsonObject = new JSONObject();
DmPromptDto promptDto = dmPromptService.selectByName("generative-knowledge");
// 根据content内容调用模版并返回结果
String prefix = "你的任务是[针对给定的文段提出" + (content.length() /100 + 1 ) + "个问题并回答]。文段为:[\"";
String suffix = "\"]。输出为一个JSON数组[{}],每个元素是一个JSON:{“question”:,”answer”:}。不要给出任何解释说明。";
log.info(prefix + content + suffix);
LlmContext llmContext = new LlmContext(prefix + content + suffix);
List<String> paramList = new ArrayList<>();
paramList.add(String.valueOf(content.length() /100 + 1));
paramList.add(content);
String prompt = promptDto.getPrompt(paramList);
// String prefix = "你的任务是[针对给定的文段提出" + (content.length() /100 + 1 ) + "个问题并回答]。文段为:[\"";
// String suffix = "\"]。输出为一个JSON数组[{}],每个元素是一个JSON:{“question”:,”answer”:}。不要给出任何解释说明。";
// log.info(prefix + content + suffix);

LlmContext llmContext = new LlmContext(prompt);
llmContext.setDevId(devId);
LlmParam llmParam = new LlmParam();
LlmResponse response = sysLlmService.chat(llmContext,llmParam);


+ 22
- 9
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/template/GenerativeWelcomeTemplate.java 查看文件

@@ -12,7 +12,9 @@ import com.xueyi.nlt.nlt.constant.PromptsConstants;
import com.xueyi.nlt.nlt.domain.LlmContext;
import com.xueyi.nlt.nlt.domain.LlmParam;
import com.xueyi.nlt.nlt.domain.LlmResponse;
import com.xueyi.nlt.nlt.domain.dto.DmPromptDto;
import com.xueyi.nlt.nlt.domain.vo.WelcomeLabelVo;
import com.xueyi.nlt.nlt.service.IDmPromptService;
import com.xueyi.nlt.nlt.service.ISysLlmService;
import com.xueyi.system.api.holiday.domain.po.DmHolidayPo;
import com.xueyi.system.api.holiday.feign.FeignHolidayService;
@@ -53,7 +55,7 @@ public class GenerativeWelcomeTemplate implements BaseTemplate{
private RemoteSolarService remoteSolarService;

@Autowired
private RedisTemplate<String,String> redisTemplate;
private IDmPromptService dmPromptService;

@Override
public JSONObject handle(String devId, String content) {
@@ -88,10 +90,10 @@ public class GenerativeWelcomeTemplate implements BaseTemplate{
holiday = po.getName();
}
List<WelcomeLabelVo> resultList = new ArrayList<>();
String prefix = "假设你是公司前台,";
String suffix = "请根据以上信息生成简短的话对他打招呼。生成十句打招呼内容,输出为一个JSON数组[{}],每个元素是一个JSON:{“content”:}。不要给出任何解释说明,不要带人名。";
DmPromptDto promptDto = dmPromptService.selectByName("generative-welcome");

//按照时间生成特殊招呼语
for(String time:timeType.keySet()) {
String timeString = getTimeTypeFormat(timeType.getString(time));
WelcomeLabelVo labelVo = new WelcomeLabelVo();
labelVo.setLabelName(time);
List<WelcomeLabelVo> welcomeLabelVoList = new ArrayList<>();
@@ -100,8 +102,14 @@ public class GenerativeWelcomeTemplate implements BaseTemplate{
if(StringUtils.isNotBlank(holiday) || StringUtils.isNotBlank(term)){
WelcomeLabelVo festivalWelcomeLabelVo = new WelcomeLabelVo();
festivalWelcomeLabelVo.setLabelName("festival");
log.info(prefix + getFestivalFormat(holiday) + getSolarTermFormat(term) + timeString + "看到员工时," + suffix);
LlmContext llmContext = new LlmContext(prefix + getFestivalFormat(holiday) + getSolarTermFormat(term) + timeString + "看到员工时," + suffix);
List<String> paramList = new ArrayList<>();
paramList.add(holiday);
paramList.add(term);
paramList.add(timeType.getString(time));
paramList.add("员工");
String prompt = promptDto.getPrompt(paramList);
log.info(prompt);
LlmContext llmContext = new LlmContext(prompt);
llmContext.setDevId(devId);
LlmParam llmParam = new LlmParam();
LlmResponse response = sysLlmService.chat(llmContext, llmParam);
@@ -118,9 +126,14 @@ public class GenerativeWelcomeTemplate implements BaseTemplate{
for (String people : peopleType.keySet()) {
WelcomeLabelVo welcomeLabelVo = new WelcomeLabelVo();
welcomeLabelVo.setLabelName(people);
String peopleString = getPeopleTypeFormat(peopleType.getString(people));
log.info(prefix + timeString + peopleString + suffix);
LlmContext llmContext = new LlmContext(prefix + timeString + peopleString + suffix);
List<String> paramList = new ArrayList<>();
paramList.add("");
paramList.add("");
paramList.add(timeType.getString(time));
paramList.add(peopleType.getString(people));
String prompt = promptDto.getPrompt(paramList);
log.info(prompt);
LlmContext llmContext = new LlmContext(prompt);
llmContext.setDevId(devId);
LlmParam llmParam = new LlmParam();
LlmResponse response = sysLlmService.chat(llmContext, llmParam);


+ 8
- 7
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/template/MovieChatTemplate.java 查看文件

@@ -8,6 +8,8 @@ import com.xueyi.nlt.nlt.context.TerminalSecurityContextHolder;
import com.xueyi.nlt.nlt.domain.LlmContext;
import com.xueyi.nlt.nlt.domain.LlmParam;
import com.xueyi.nlt.nlt.domain.LlmResponse;
import com.xueyi.nlt.nlt.domain.dto.DmPromptDto;
import com.xueyi.nlt.nlt.service.IDmPromptService;
import com.xueyi.nlt.nlt.service.ISysLlmService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -26,6 +28,8 @@ public class MovieChatTemplate implements BaseTemplate{
@Autowired
WebSocketClientManager webSocketClientManager;

@Autowired
IDmPromptService dmPromptService;
@Autowired
ISysLlmService sysLlmService;

@@ -35,11 +39,8 @@ public class MovieChatTemplate implements BaseTemplate{
@Override
public JSONObject handle(String devId, String content) {
// 判断content如果小于5五个字,返回msg:对不起,能否再描述清除一些。
if(content.length() < 5){
JSONObject resultJson = new JSONObject();
resultJson.put("msg","对不起,能否再描述清楚一些。");
return resultJson;
}
DmPromptDto promptDto = dmPromptService.selectByName("movie-chat");

Long operatorId = TerminalSecurityContextHolder.getOperatorId();
String redisKey = "group:nlp:" + SecurityContextHolder.getLocalMap().get("enterprise_id") + ":" + operatorId;
// 根据content内容调用模版并返回结果
@@ -50,7 +51,7 @@ public class MovieChatTemplate implements BaseTemplate{
}
size = redisTemplate.opsForList().size(redisKey);
List<String> context = new ArrayList<>();
context.add("你是一位电影领域的专家。你来自于缔智元公司。你的名字叫小智");
context.add(promptDto.getRole());
context.addAll(redisTemplate.opsForList().range(redisKey,size-6,size));

context.add(content);
@@ -67,7 +68,7 @@ public class MovieChatTemplate implements BaseTemplate{

if(!StringUtils.isEmpty(result)){
if (result.equals("-1")) {
result = "这个问题超出了我的能力,您可以提出更多关于公司相关问题。";
result = promptDto.getErrMsg();
} else {
redisTemplate.opsForList().rightPush(redisKey,content);
redisTemplate.opsForList().rightPush(redisKey,result);


+ 10
- 0
xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/digitalmans/controller/DmQAndAController.java 查看文件

@@ -128,6 +128,16 @@ public class DmQAndAController extends BaseController<DmQAndAQuery, DmQAndADto,
return super.success();
}

/**
* 企业知识库问答批量删除(大模型)
*/
@DeleteMapping("/batch/llm/{idList}")
@RequiresPermissions(Auth.DM_Q_AND_A_DEL)
@Log(title = "企业知识库问答管理", businessType = BusinessType.DELETE)
public AjaxResult batchLlmRemove(@PathVariable List<String> idList) {
return AjaxResult.success(baseService.deleteLlmByIds(idList));
}

/**
* 企业知识库问答修改
*/


+ 2
- 0
xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/digitalmans/domain/dto/DmQAndADto.java 查看文件

@@ -22,4 +22,6 @@ public class DmQAndADto extends DmQAndAPo {

private String creator;

private String fileId;

}

+ 4
- 0
xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/digitalmans/service/IDmQAndAService.java 查看文件

@@ -4,6 +4,8 @@ import com.xueyi.system.digitalmans.domain.query.DmQAndAQuery;
import com.xueyi.system.digitalmans.domain.dto.DmQAndADto;
import com.xueyi.common.web.entity.service.IBaseService;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;

/**
@@ -13,4 +15,6 @@ import java.util.List;
*/
public interface IDmQAndAService extends IBaseService<DmQAndAQuery, DmQAndADto> {
Integer batchInsert(List<DmQAndADto> queryList);

Integer deleteLlmByIds(Collection<? extends Serializable> idList);
}

+ 47
- 1
xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/digitalmans/service/impl/DmQAndAServiceImpl.java 查看文件

@@ -1,5 +1,8 @@
package com.xueyi.system.digitalmans.service.impl;

import com.alibaba.fastjson2.JSONObject;
import com.xueyi.common.core.utils.ServletUtil;
import com.xueyi.nlt.api.nlt.feign.RemoteLandingLlmService;
import com.xueyi.system.api.organize.domain.dto.SysUserDto;
import com.xueyi.system.api.organize.domain.query.SysUserQuery;
import com.xueyi.system.digitalmans.domain.dto.DmQAndADto;
@@ -8,12 +11,18 @@ import com.xueyi.system.digitalmans.domain.query.DmQAndAQuery;
import com.xueyi.system.digitalmans.service.IDmQAndAService;
import com.xueyi.system.digitalmans.manager.IDmQAndAManager;
import com.xueyi.common.web.entity.service.impl.BaseServiceImpl;
import com.xueyi.system.digitalmans.service.IDmQuestionsService;
import com.xueyi.system.organize.service.ISysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import static com.xueyi.common.core.web.page.TableSupport.PAGE_NUM;
import static com.xueyi.common.core.web.page.TableSupport.PAGE_SIZE;
/**
* 企业知识库问答管理 服务层处理
*
@@ -24,6 +33,11 @@ public class DmQAndAServiceImpl extends BaseServiceImpl<DmQAndAQuery, DmQAndADto

@Autowired
private ISysUserService iSysUserService;

@Autowired
private IDmQuestionsService dmQuestionsService;
@Autowired
private RemoteLandingLlmService remoteLandingLlmService;
/**
* 查询企业知识库问答对象列表 | 数据权限
*
@@ -33,7 +47,28 @@ public class DmQAndAServiceImpl extends BaseServiceImpl<DmQAndAQuery, DmQAndADto
@Override
//@DataScope(userAlias = "createBy", mapperScope = {"DmQAndAMapper"})
public List<DmQAndADto> selectListScope(DmQAndAQuery qAndA) {

// 根据knowledgeId获取知识库信息
DmQuestionsDto questionsDto = dmQuestionsService.selectById(qAndA.getKnowledgeId());
if (questionsDto != null && questionsDto.getType() != null && questionsDto.getType() == 1) {
System.out.println(ServletUtil.getParameterToInt(PAGE_SIZE));
System.out.println(ServletUtil.getParameterToInt(PAGE_NUM));
// System.out.println(page.getPageNum() + " " + page.getPageSize());
// 根据name获取上传文档列表
JSONObject jsonObject = remoteLandingLlmService.getUploadFileList(questionsDto.getName(), String.valueOf(ServletUtil.getParameterToInt(PAGE_SIZE)),String.valueOf(ServletUtil.getParameterToInt(PAGE_NUM)));
System.out.println(jsonObject.toJSONString());
if (jsonObject != null) {
List<DmQAndADto> dmQAndADtos = new ArrayList<>();
int totalRow = jsonObject.getInteger("totalRow");
for (int i = 0;i < jsonObject.getJSONArray("data").size(); i++) {
DmQAndADto dmQAndADto = new DmQAndADto();
dmQAndADto.setFileId(jsonObject.getJSONArray("data").getJSONObject(i).getString("fileId"));
dmQAndADto.setKnowledgeId(qAndA.getKnowledgeId());
dmQAndADto.setName(jsonObject.getJSONArray("data").getJSONObject(i).getString("filename"));
dmQAndADtos.add(dmQAndADto);
}
return dmQAndADtos;
}
}
SysUserQuery userQuery = new SysUserQuery();
List<SysUserDto> userDtos = iSysUserService.selectList(userQuery);

@@ -53,4 +88,15 @@ public class DmQAndAServiceImpl extends BaseServiceImpl<DmQAndAQuery, DmQAndADto
public Integer batchInsert(List<DmQAndADto> queryList) {
return baseManager.insertBatch(queryList);
}

@Override
public Integer deleteLlmByIds(Collection<? extends Serializable> idList) {
//idList转换成List<String>
List<String> ids = new ArrayList<>();
idList.forEach(id -> {
ids.add(String.valueOf(id));
});
remoteLandingLlmService.deleteFile(ids);
return ids.size();
}
}

正在加载...
取消
保存