From 23bd719cebe5feeff4e48fde925b0b39755eea93 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期二, 15 十一月 2022 10:59:50 +0800
Subject: [PATCH] 2022.11.15

---
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/OnLineQuestionServiceImpl.kt |   63 ++++++++++++++++++++++---------
 1 files changed, 45 insertions(+), 18 deletions(-)

diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/OnLineQuestionServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/OnLineQuestionServiceImpl.kt
index 053434b..4fea98a 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/OnLineQuestionServiceImpl.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/Impl/OnLineQuestionServiceImpl.kt
@@ -1,5 +1,6 @@
 package cn.flightfeather.supervision.lightshare.service.Impl
 
+import cn.flightfeather.supervision.common.nlp.NlpController
 import cn.flightfeather.supervision.domain.entity.*
 import cn.flightfeather.supervision.domain.enumeration.*
 import cn.flightfeather.supervision.domain.mapper.*
@@ -26,7 +27,8 @@
     private val userinfoMapper: UserinfoMapper,
     private val cstQuestionMapper: CstQuestionMapper,
     private val settingAnswerMapper: SettingAnswerMapper,
-    private val enforceCaseMapper: EnforceCaseMapper
+    private val enforceCaseMapper: EnforceCaseMapper,
+    private val nlpController: NlpController
 ) : OnLineQuestionService {
     @Resource
     private val onLineQuestionMapper: OnLineQuestionMapper? = null
@@ -100,6 +102,11 @@
     }
 
     override fun searchLaw(userId: String, keyword: String, type: Byte?, page: Int, perPage: Int): BaseResponse<List<ConsultResultVo>> {
+        val keywordList = if (keyword.isBlank()) {
+            emptyList()
+        } else {
+            nlpController.execute(keyword)
+        }
         val userInfo = userinfoMapper.selectByPrimaryKey(userId) ?: return BaseResponse(false)
         val response = BaseResponse<List<ConsultResultVo>>(false, head = DataHead(page, perPage))
         val result = mutableListOf<ConsultResultVo>()
@@ -112,14 +119,21 @@
         if (type == null || type == ConsultResultType.TYPE1.value) {
             val p = PageHelper.startPage<MgtFile>(_page, _perPage)
             val example = Example(MgtFile::class.java).apply {
-                if (keyword.isNotBlank()) {
-                    createCriteria().orLike("mfName", "%${keyword}%")
-                        .orLike("mfShortName", "%${keyword}%")
-                        .orLike("mfSummary", "%${keyword}%")
-                        .orLike("mfKeywordLv1", "%${keyword}%")
-                        .orLike("mfKeywordLv2", "%${keyword}%")
-                        .orLike("mfKeywordLv3", "%${keyword}%")
-                        .orLike("mfKeywordLv4", "%${keyword}%")
+                if (keywordList.isNotEmpty()) {
+                    createCriteria().apply {
+                        keywordList.forEach { k ->
+                            orLike("mfName", "%${k}%")
+                            orLike("mfShortName", "%${k}%")
+                            orLike("mfSummary", "%${k}%")
+                            orLike("mfKeywordLv1", "%${k}%")
+                            orLike("mfKeywordLv2", "%${k}%")
+                            orLike("mfKeywordLv3", "%${k}%")
+                            orLike("mfKeywordLv4", "%${k}%")
+                        }
+                    }
+                    and(createCriteria().orLike("mfExtension1", "%${userInfo.extension2}%")
+                        .orEqualTo("mfExtension1", "")
+                        .orIsNull("mfExtension1"))
                 } else {
                     // TODO: 2022/9/8 娌℃湁鍏抽敭瀛楁椂锛屾寜鐓х儹闂ㄨ幏鍙栨満鍒惰幏鍙�
                     createCriteria().orLike("mfExtension1", "%${userInfo.extension2}%")
@@ -166,14 +180,19 @@
             val map = mutableMapOf<String, MgtFile>()
             val p = PageHelper.startPage<MgtItem>(_page, _perPage)
             val example = Example(MgtItem::class.java).apply {
-                if (keyword.isNotBlank()) {
-                    createCriteria().orLike("miChapterKeyword", "%${keyword}%")
-                        .orLike("miKeyword", "%${keyword}%")
+                if (keywordList.isNotEmpty()) {
+                    createCriteria().apply {
+                        keywordList.forEach { k ->
+                            orLike("miChapterKeyword", "%${k}%")
+                            orLike("miKeyword", "%${k}%")
+                        }
+                    }
                 } else {
                     // TODO: 2022/9/8 娌℃湁鍏抽敭瀛楁椂锛屾寜鐓х儹闂ㄨ幏鍙栨満鍒惰幏鍙栨潯鐩�
                 }
             }
             mgtItemMapper.selectByExample(example).forEach {
+
                 if (!map.containsKey(it.mfGuid)) {
                     map[it.mfGuid] = mgtFileMapper.selectByPrimaryKey(it.mfGuid)
                 }
@@ -217,13 +236,17 @@
         if (type == null || type == ConsultResultType.TYPE4.value) {
             val p = PageHelper.startPage<CstQuestion>(_page, _perPage)
             val example = Example(CstQuestion::class.java).apply {
-                if (keyword.isNotBlank()) {
+                if (keywordList.isNotEmpty()) {
                     createCriteria().orLike("cqScenes", "%${userInfo.extension2}%")
                         .orEqualTo("cqScenes", "")
                         .orIsNull("cqScenes")
                     and(
-                        createCriteria().orLike("cqContent", "%${keyword}%")
-                            .orLike("cqKeywords", "%${keyword}%")
+                        createCriteria().apply {
+                            keywordList.forEach { k ->
+                                orLike("cqContent", "%${k}%")
+                                orLike("cqKeywords", "%${k}%")
+                            }
+                        }
                     )
                 } else {
                     // TODO: 2022/9/8 娌℃湁鍏抽敭瀛楁椂锛屾寜鐓х儹闂ㄨ幏鍙栨満鍒惰幏鍙�
@@ -274,13 +297,17 @@
         if (type == null || type == ConsultResultType.TYPE3.value) {
             val p = PageHelper.startPage<EnforceCase>(_page, _perPage)
             val example = Example(EnforceCase::class.java).apply {
-                if (keyword.isNotBlank()) {
+                if (keywordList.isNotEmpty()) {
                     createCriteria().orLike("ecScenes", "%${userInfo.extension2}%")
                         .orEqualTo("ecScenes", "")
                         .orIsNull("ecScenes")
                     and(
-                        createCriteria().orLike("ecTitle", "%${keyword}%")
-                            .orLike("ecKeywords", "%${keyword}%")
+                        createCriteria().apply {
+                            keywordList.forEach { k ->
+                                orLike("ecTitle", "%${k}%")
+                                orLike("ecKeywords", "%${k}%")
+                            }
+                        }
                     )
                 } else {
                     // TODO: 2022/9/8 娌℃湁鍏抽敭瀛楁椂锛屾寜鐓х儹闂ㄨ幏鍙栨満鍒惰幏鍙�

--
Gitblit v1.9.3