Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
H
hphy
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
向怀芳
hphy
Commits
59b38906
Commit
59b38906
authored
1 year ago
by
gaozhaochen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update: 更新智能机器人问答接口
parent
be0b34f5
hpgp-m
hpgp
No related merge requests found
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
102 additions
and
38 deletions
+102
-38
WoaUtil.java
...n/java/cn/sh/stc/sict/cloud/common/core/util/WoaUtil.java
+1
-1
CurrentUser.java
.../main/java/cn/sh/stc/sict/cloud/upms/dto/CurrentUser.java
+8
-0
HpGpIntelligentQAController.java
...e/hpgp/controller/mobile/HpGpIntelligentQAController.java
+93
-37
No files found.
cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/util/WoaUtil.java
View file @
59b38906
...
...
@@ -39,7 +39,7 @@ public class WoaUtil {
/**
* 获取用户信息请求地址
*/
private
final
static
String
WOA_XSZY_USER_INFO_API_URL
=
WOA_XSZY_
PROXY_PASS_
URL
+
WOA_XSZY_GATEWAY_URL
;
private
final
static
String
WOA_XSZY_USER_INFO_API_URL
=
WOA_XSZY_URL
+
WOA_XSZY_GATEWAY_URL
;
/**
* 接口授权信息
...
...
This diff is collapsed.
Click to expand it.
smart-health-modules/cloud-upms/cloud-upms-api/src/main/java/cn/sh/stc/sict/cloud/upms/dto/CurrentUser.java
View file @
59b38906
package
cn
.
sh
.
stc
.
sict
.
cloud
.
upms
.
dto
;
import
cn.hutool.json.JSONArray
;
import
cn.hutool.json.JSONObject
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.util.Date
;
import
java.util.List
;
/**
* @Description 当前登陆人信息
...
...
@@ -35,4 +38,9 @@ public class CurrentUser implements Serializable {
*/
private
String
xszyUserInfo
;
/**
* 机器人问答
*/
private
List
<
List
<
String
>>
qaHistory
;
}
This diff is collapsed.
Click to expand it.
smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hpgp/controller/mobile/HpGpIntelligentQAController.java
View file @
59b38906
package
cn
.
sh
.
stc
.
sict
.
theme
.
hpgp
.
controller
.
mobile
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.map.MapUtil
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.core.util.XmlUtil
;
import
cn.hutool.http.HttpRequest
;
import
cn.sh.stc.sict.cloud.common.core.util.R
;
import
cn.sh.stc.sict.cloud.common.log.annotation.SysLog
;
import
cn.sh.stc.sict.cloud.common.security.util.SecurityUtils
;
import
cn.sh.stc.sict.cloud.upms.dto.CurrentUser
;
import
cn.sh.stc.sict.theme.hpgp.vo.IntelligentAnswerVO
;
import
com.baomidou.mybatisplus.core.toolkit.IdWorker
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.google.api.client.util.Lists
;
import
com.google.common.collect.Sets
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.
Map
;
import
java.util.
List
;
import
java.util.Set
;
/**
...
...
@@ -29,54 +28,111 @@ import java.util.Set;
*/
@Slf4j
@RestController
@AllArgsConstructor
@Api
(
tags
=
"[C]黄浦精准预约——智能问答"
)
@RequestMapping
(
"/hpgp/c/intelligent/qa"
)
public
class
HpGpIntelligentQAController
{
private
final
static
String
CONTENT
=
"Content"
;
@Value
(
"${hpgp-guide.qa-url:http://180.169.131.147:8000/}"
)
private
String
qaUrl
;
@Value
(
"${hpgp-guide.qa-history-limit:3}"
)
private
Integer
qaHistoryLimit
;
private
final
static
String
QA_RESULT_FLAG
=
"Helper: "
;
/**
* 打浦桥科室
*/
private
final
static
Set
<
String
>
DPQ_DEPARTMENT
=
Sets
.
newHashSet
(
"皮肤性病科"
,
"中医科"
,
"儿保科"
,
"全科医疗科"
);
// @SysLog
// @ApiOperation("智能问答")
// @PostMapping
// public R<?> qa(String question) {
// CurrentUser current = SecurityUtils.getCurrentUser();
// String from = StrUtil.isNotBlank(current.getOpenId()) ? current.getOpenId() : current.getId().toString();
//
// String xml = "<xml>\n" +
// " <ToUserName><![CDATA[huangpurobot]]></ToUserName>\n" +
// " <FromUserName><![CDATA[" + from + "]]></FromUserName>\n" +
// " <CreateTime>" + DateUtil.now() + "</CreateTime>\n" +
// " <MsgType><![CDATA[text]]></MsgType>\n" +
// " <Content><![CDATA[" + question + "]]></Content>\n" +
// " <MsgId>" + IdWorker.getId() + "</MsgId>\n" +
// "</xml>";
// // 162 为黄浦高血压专病导医机器人
// // 51 黄浦高血压全科导诊机器人
// String body = HttpRequest.post(" http://www.365jqr.com/jqrsvr.ashx?Command=talk_51")
// .body(xml)
// .execute()
// .body();
// log.error("孙总接口请求 xml = {}", xml);
// log.error("孙总接口返回 body = {}", body);
// IntelligentAnswerVO answerVO = new IntelligentAnswerVO();
// Map<String, Object> result = XmlUtil.xmlToMap(body);
// if (result.containsKey(CONTENT)) {
// answerVO.setAnswer(MapUtil.getStr(result, CONTENT));
// if (StrUtil.isNotBlank(current.getHospitalCode())
// && "42502942300".equals(current.getHospitalCode())) {
// if (StrUtil.isNotBlank(answerVO.getDeptName())
// && !DPQ_DEPARTMENT.contains(answerVO.getDeptName())) {
// String oldDeptName = answerVO.getDeptName();
// answerVO.setAnswer(answerVO.getAnswer().replace(oldDeptName, "全科医疗科"));
// answerVO.setDeptName("全科医疗科");
// }
// }
// }
// return new R<>(answerVO);
// }
@SysLog
@ApiOperation
(
"智能问答"
)
@PostMapping
public
R
<?>
qa
(
String
question
)
{
public
R
qaV2
(
String
question
)
{
CurrentUser
current
=
SecurityUtils
.
getCurrentUser
();
String
from
=
StrUtil
.
isNotBlank
(
current
.
getOpenId
())
?
current
.
getOpenId
()
:
current
.
getId
().
toString
();
String
xml
=
"<xml>\n"
+
" <ToUserName><![CDATA[huangpurobot]]></ToUserName>\n"
+
" <FromUserName><![CDATA["
+
from
+
"]]></FromUserName>\n"
+
" <CreateTime>"
+
DateUtil
.
now
()
+
"</CreateTime>\n"
+
" <MsgType><![CDATA[text]]></MsgType>\n"
+
" <Content><![CDATA["
+
question
+
"]]></Content>\n"
+
" <MsgId>"
+
IdWorker
.
getId
()
+
"</MsgId>\n"
+
"</xml>"
;
List
<
List
<
String
>>
qaHistory
=
current
.
getQaHistory
();
String
from
=
current
.
getId
().
toString
();
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"username"
,
from
);
if
(
CollUtil
.
isEmpty
(
qaHistory
))
{
qaHistory
=
Lists
.
newArrayListWithCapacity
(
1
);
}
if
(
qaHistory
.
size
()
>
qaHistoryLimit
)
{
qaHistory
=
qaHistory
.
subList
(
0
,
qaHistoryLimit
-
1
);
}
List
<
String
>
currentQa
=
Lists
.
newArrayList
();
currentQa
.
add
(
question
);
currentQa
.
add
(
null
);
qaHistory
.
add
(
currentQa
);
jsonObject
.
put
(
"history"
,
qaHistory
);
String
req
=
JSON
.
toJSONString
(
jsonObject
);
// 162 为黄浦高血压专病导医机器人
// 51 黄浦高血压全科导诊机器人
String
body
=
HttpRequest
.
post
(
"http://30.30.5.74:9988/qa/jqrsvr.ashx?Command=talk_51"
)
.
body
(
xml
)
String
body
=
HttpRequest
.
post
(
qaUrl
)
.
body
(
req
,
"application/json"
)
.
execute
()
.
body
();
log
.
error
(
"孙总接口请求 xml = {}"
,
xml
);
log
.
error
(
"孙总接口返回 body = {}"
,
body
);
IntelligentAnswerVO
answerVO
=
new
IntelligentAnswerVO
();
Map
<
String
,
Object
>
result
=
XmlUtil
.
xmlToMap
(
body
);
if
(
result
.
containsKey
(
CONTENT
))
{
answerVO
.
setAnswer
(
MapUtil
.
getStr
(
result
,
CONTENT
));
if
(
StrUtil
.
isNotBlank
(
current
.
getHospitalCode
())
&&
"42502942300"
.
equals
(
current
.
getHospitalCode
()))
{
if
(
StrUtil
.
isNotBlank
(
answerVO
.
getDeptName
())
&&
!
DPQ_DEPARTMENT
.
contains
(
answerVO
.
getDeptName
()))
{
String
oldDeptName
=
answerVO
.
getDeptName
();
answerVO
.
setAnswer
(
answerVO
.
getAnswer
().
replace
(
oldDeptName
,
"全科医疗科"
));
answerVO
.
setDeptName
(
"全科医疗科"
);
}
log
.
error
(
"接口请求 req = {}"
,
req
);
log
.
error
(
"接口返回 body = {}"
,
body
);
if
(
StrUtil
.
isBlank
(
body
)
||
!
body
.
contains
(
QA_RESULT_FLAG
))
{
return
new
R
();
}
}
return
new
R
<>(
answerVO
);
body
=
body
.
replaceAll
(
QA_RESULT_FLAG
,
""
);
body
=
body
.
replaceAll
(
"<[.[^>]]*>"
,
""
);
currentQa
.
set
(
1
,
body
);
current
.
setQaHistory
(
qaHistory
);
SecurityUtils
.
updateCurrent
(
current
);
IntelligentAnswerVO
answerVO
=
new
IntelligentAnswerVO
();
answerVO
.
setAnswer
(
body
);
return
new
R
(
answerVO
);
}
}
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment