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
92ecc440
Commit
92ecc440
authored
1 year ago
by
gaozhaochen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update: 统计接口新增预约时间维度,机器人推荐科室小东门单独处理
parent
307551ac
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
112 additions
and
83 deletions
+112
-83
HpGpIntelligentQAController.java
...e/hpgp/controller/mobile/HpGpIntelligentQAController.java
+98
-79
HpStatisticsMapper.xml
...ema/src/main/resources/mapper/hphy/HpStatisticsMapper.xml
+14
-4
No files found.
smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hpgp/controller/mobile/HpGpIntelligentQAController.java
View file @
92ecc440
package
cn
.
sh
.
stc
.
sict
.
theme
.
hpgp
.
controller
.
mobile
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.map.MapUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.core.util.XmlUtil
;
import
cn.hutool.http.HttpRequest
;
import
cn.hutool.http.HttpResponse
;
import
cn.sh.stc.sict.cloud.common.core.util.R
;
...
...
@@ -11,6 +14,7 @@ import cn.sh.stc.sict.cloud.upms.dto.CurrentUser;
import
cn.sh.stc.sict.theme.hpgp.vo.IntelligentAnswerVO
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.toolkit.IdWorker
;
import
com.google.api.client.util.Lists
;
import
com.google.common.collect.Sets
;
import
io.swagger.annotations.Api
;
...
...
@@ -22,6 +26,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
/**
...
...
@@ -46,94 +51,108 @@ public class HpGpIntelligentQAController {
* 打浦桥科室
*/
private
final
static
Set
<
String
>
DPQ_DEPARTMENT
=
Sets
.
newHashSet
(
"皮肤性病科"
,
"中医科"
,
"儿保科"
,
"全科医疗科"
);
private
final
static
Set
<
String
>
XDM_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://30.30.5.74:9988/qa/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
(
"全科医疗科"
);
}
}
// 小东门单独处理
if
(
StrUtil
.
isNotBlank
(
current
.
getHospitalCode
())
&&
"42507025800"
.
equals
(
current
.
getHospitalCode
()))
{
if
(
StrUtil
.
isNotBlank
(
answerVO
.
getDeptName
())
&&
!
XDM_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();
// 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);
//
// 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("全科医疗科");
// }
// }
// HttpResponse response = HttpRequest.post(qaUrl)
// .body(req, "application/json")
// .execute();
// String body = response.body();
// log.error("接口请求 req = {}", req);
// log.error("接口返回 body = {}", body);
// if (response.getStatus() != 200 || StrUtil.isBlank(body)) {
// 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);
// }
@SysLog
@ApiOperation
(
"智能问答"
)
@PostMapping
public
R
qaV2
(
String
question
)
{
CurrentUser
current
=
SecurityUtils
.
getCurrentUser
();
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 黄浦高血压全科导诊机器人
HttpResponse
response
=
HttpRequest
.
post
(
qaUrl
)
.
body
(
req
,
"application/json"
)
.
execute
();
String
body
=
response
.
body
();
log
.
error
(
"接口请求 req = {}"
,
req
);
log
.
error
(
"接口返回 body = {}"
,
body
);
if
(
response
.
getStatus
()
!=
200
||
StrUtil
.
isBlank
(
body
))
{
return
new
R
();
}
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.
smart-health-modules/theme-schema/src/main/resources/mapper/hphy/HpStatisticsMapper.xml
View file @
92ecc440
...
...
@@ -72,14 +72,19 @@
</select>
<select
id=
"countAll4Third"
resultType=
"java.util.LinkedHashMap"
>
SELECT * FROM
(
-- 统计各家医院预约人数
SELECT
IFNULL(c.appointment_count,0) AS '导诊数',
h.hos_org_code AS '医疗机构代码',
h.hos_name AS '医疗机构名称',
t.inter_des AS '对接状态'
t.inter_des AS '对接状态',
DATE_FORMAT(c.create_time,'%Y-%m-%d') AS '导诊时间'
FROM (
SELECT count(1) AS appointment_count, hos_org_code
SELECT count(1) AS appointment_count,
hos_org_code,
create_time
FROM `hp_appointment`
<where>
<if
test=
"startTime != null and startTime != '' "
>
...
...
@@ -89,7 +94,7 @@
AND create_time
<
= #{endTime}
</if>
</where>
GROUP BY hos_org_code
GROUP BY hos_org_code
,DATE_FORMAT(create_time,'%Y-%m-%d')
) c
RIGHT JOIN hp_hos_info h ON c.hos_org_code = h.hos_org_code
RIGHT JOIN hp_third_interface_status t ON h.hos_org_code = t.hos_org_code
...
...
@@ -99,7 +104,8 @@
COUNT(1) AS '导诊数' ,
1 AS '医疗机构代码' ,
'卫管中心' AS '医疗机构名称',
'已对接' AS '对接状态'
'已对接' AS '对接状态',
DATE_FORMAT(create_time,'%Y-%m-%d') AS '导诊时间'
FROM `sys_log`
WHERE title = '预约' AND create_by like '%wx24c55f38b535cd96%'
<if
test=
"startTime != null and startTime != '' "
>
...
...
@@ -108,6 +114,10 @@
<if
test=
"endTime != null and endTime != '' "
>
AND create_time
<
= #{endTime}
</if>
GROUP BY DATE_FORMAT(create_time,'%Y-%m-%d')
) t
WHERE 导诊时间 IS not null
order by `医疗机构代码`,`导诊时间`
</select>
</mapper>
\ No newline at end of file
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