|
|
@@ -11,9 +11,12 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.github.therapi.runtimejavadoc.repack.com.eclipsesource.json.JsonObject;
|
|
|
+import com.inspur.device.domain.SmsbDifyDatasetsQuestion;
|
|
|
import com.inspur.device.domain.vo.DifyDatasetsFileRspData;
|
|
|
import com.inspur.device.domain.vo.SmsbDeviceGroupRelVo;
|
|
|
+import com.inspur.device.domain.vo.SmsbDifyDatasetsQuestionVo;
|
|
|
import com.inspur.device.mapper.SmsbDeviceGroupRelMapper;
|
|
|
+import com.inspur.device.mapper.SmsbDifyDatasetsQuestionMapper;
|
|
|
import com.inspur.digital.domain.*;
|
|
|
import com.inspur.digital.domain.bo.SmsbAppointmentInfoBo;
|
|
|
import com.inspur.digital.domain.bo.SmsbStartInfoBo;
|
|
|
@@ -30,6 +33,7 @@ import org.dromara.common.core.utils.MapstructUtils;
|
|
|
import org.dromara.common.core.utils.StringUtils;
|
|
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
|
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|
|
+import org.dromara.common.redis.utils.RedisUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
|
|
@@ -62,6 +66,7 @@ public class SmsbAppointmentInfoServiceImpl implements ISmsbAppointmentInfoServi
|
|
|
private final SmsbDeviceChatScSceneMapper smsbDeviceChatScSceneMapper;
|
|
|
private final SmsbDeviceChatScCaseMapper smsbDeviceChatScCaseMapper;
|
|
|
private final SmsbDeviceScScanCodeMapper smsbDeviceScScanCodeMapper;
|
|
|
+ private final SmsbDifyDatasetsQuestionMapper smsbDifyDatasetsQuestionMapper;
|
|
|
@Autowired
|
|
|
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
|
|
|
@Value("${sc.api.url}")
|
|
|
@@ -626,9 +631,28 @@ public class SmsbAppointmentInfoServiceImpl implements ISmsbAppointmentInfoServi
|
|
|
result.setBaseHelloWorld("你好,我是小数智能分析助手,有什么可以帮你?");
|
|
|
// TODO 同步公共知识库
|
|
|
// 1、根据redis key 获取redis value
|
|
|
+ String flag = RedisUtils.getCacheObject(REDIS_SYNC_DATASETS_FLAG_KEY);
|
|
|
// 2、如果value 是空或者是企业enterpris 同步更新四个知识库为公共条目
|
|
|
- // 3、如果是common 不做操作
|
|
|
- // 4、同步成功 设置key的value为common
|
|
|
+ if (!REDIS_SYNC_DATASETS_FLAG_VALUE_COMMON.equals(flag)) {
|
|
|
+ // 同步四个知识库为公共知识库
|
|
|
+ List<SmsbDifyDatasetsQuestionVo> questionVoList = smsbDifyDatasetsQuestionMapper
|
|
|
+ .selectVoList(new LambdaQueryWrapper<SmsbDifyDatasetsQuestion>()
|
|
|
+ .eq(SmsbDifyDatasetsQuestion::getTenantId, appointmentInfo.getTenantId()));
|
|
|
+ List<String> qaList = questionVoList.stream()
|
|
|
+ .map(questionVo -> questionVo.getQuestion() + ":" + questionVo.getAnswer())
|
|
|
+ .toList();
|
|
|
+ // 线程1 更新诊断报告的知识库
|
|
|
+ syncDatasetsReport(qaList, difyScDatasetReportId);
|
|
|
+ // 线程2 更新有样学样的知识库
|
|
|
+ syncDatasetsCase(qaList, difyScDatasetCaseId);
|
|
|
+ // 线程3 更新套餐推荐的知识库
|
|
|
+ syncDatasetsProduct(qaList, difyScDatasetProductId);
|
|
|
+ // 线程4 更新场景推荐的知识库
|
|
|
+ syncDatasetsScene(qaList, difyScDatasetSceneId);
|
|
|
+ // 3、同步成功 设置key的value为common
|
|
|
+ RedisUtils.setCacheObject(REDIS_SYNC_DATASETS_FLAG_KEY, REDIS_SYNC_DATASETS_FLAG_VALUE_COMMON);
|
|
|
+ }
|
|
|
+ // 4、如果是common 不做操作
|
|
|
return R.ok(result);
|
|
|
}
|
|
|
// 存在预约
|
|
|
@@ -764,6 +788,7 @@ public class SmsbAppointmentInfoServiceImpl implements ISmsbAppointmentInfoServi
|
|
|
// 线程4 更新场景推荐的知识库
|
|
|
syncDatasetsScene(sceneContentList, difyScDatasetSceneId);
|
|
|
// TODO redis缓存同步标识为企业扫识
|
|
|
+ RedisUtils.setCacheObject(REDIS_SYNC_DATASETS_FLAG_KEY, REDIS_SYNC_DATASETS_FLAG_VALUE_ENTERPRISE);
|
|
|
return R.ok(result);
|
|
|
}
|
|
|
|