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
21fa2527
Commit
21fa2527
authored
Aug 03, 2022
by
fshenye
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1. 定时任务,每日12点,24点统计排行科室号源信息,修改原来计算科室号源信息接口
2. bugfix:修复新用户需要完善信息问题
parent
b75530da
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
286 additions
and
165 deletions
+286
-165
WDUserInfo.java
...java/cn/sh/stc/sict/cloud/common/core/dto/WDUserInfo.java
+1
-0
SysUserBaseServiceImpl.java
.../sict/cloud/upms/service/impl/SysUserBaseServiceImpl.java
+5
-7
HpgpBusyIdlePrediction.java
.../sh/stc/sict/theme/hpgp/model/HpgpBusyIdlePrediction.java
+52
-8
HpgpBusyIdlePredictionService.java
...ict/theme/hpgp/service/HpgpBusyIdlePredictionService.java
+5
-2
HpgpBusyIdlePredictionServiceImpl.java
.../hpgp/service/impl/HpgpBusyIdlePredictionServiceImpl.java
+137
-78
HpgpDepartmentRankServiceImpl.java
...heme/hpgp/service/impl/HpgpDepartmentRankServiceImpl.java
+5
-0
DeptPredictionVO.java
...n/java/cn/sh/stc/sict/theme/hpgp/vo/DeptPredictionVO.java
+0
-31
HpDeptInfoController.java
...c/sict/theme/hphy/controller/mp/HpDeptInfoController.java
+23
-4
HphyPatientBaseController.java
...t/theme/hphy/controller/mp/HphyPatientBaseController.java
+7
-0
RefreshJob.java
...n/java/cn/sh/stc/sict/theme/hphy/schedule/RefreshJob.java
+25
-0
HpDeptInfoServiceImpl.java
...c/sict/theme/hphy/service/impl/HpDeptInfoServiceImpl.java
+20
-29
HphyPatientBaseServiceImpl.java
...t/theme/hphy/service/impl/HphyPatientBaseServiceImpl.java
+6
-6
No files found.
cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/dto/WDUserInfo.java
View file @
21fa2527
...
@@ -12,6 +12,7 @@ public class WDUserInfo {
...
@@ -12,6 +12,7 @@ public class WDUserInfo {
private
String
token
;
private
String
token
;
private
String
id
;
private
String
id
;
private
String
username
;
private
String
username
;
private
String
name
;
private
String
personcard
;
private
String
personcard
;
private
String
mobile
;
private
String
mobile
;
private
Date
birth
;
private
Date
birth
;
...
...
smart-health-modules/cloud-upms/cloud-upms-biz/src/main/java/cn/sh/stc/sict/cloud/upms/service/impl/SysUserBaseServiceImpl.java
View file @
21fa2527
...
@@ -2,17 +2,16 @@ package cn.sh.stc.sict.cloud.upms.service.impl;
...
@@ -2,17 +2,16 @@ package cn.sh.stc.sict.cloud.upms.service.impl;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.json.JSONUtil
;
import
cn.sh.stc.sict.cloud.common.core.constant.Constant
;
import
cn.sh.stc.sict.cloud.common.core.constant.Constant
;
import
cn.sh.stc.sict.cloud.common.core.constant.UserConstant
;
import
cn.sh.stc.sict.cloud.common.core.constant.UserConstant
;
import
cn.sh.stc.sict.cloud.common.core.constant.enums.LoginTypeEnum
;
import
cn.sh.stc.sict.cloud.common.core.constant.enums.LoginTypeEnum
;
import
cn.sh.stc.sict.cloud.common.core.dto.WDUserCardInfo
;
import
cn.sh.stc.sict.cloud.common.core.dto.WDUserInfo
;
import
cn.sh.stc.sict.cloud.common.core.dto.WDUserInfo
;
import
cn.sh.stc.sict.cloud.common.core.util.NumberUtil
;
import
cn.sh.stc.sict.cloud.common.core.util.NumberUtil
;
import
cn.sh.stc.sict.cloud.common.core.util.SsbUtil
;
import
cn.sh.stc.sict.cloud.common.core.util.SsbUtil
;
import
cn.sh.stc.sict.cloud.upms.dao.SysUserBaseMapper
;
import
cn.sh.stc.sict.cloud.upms.dao.SysUserBaseMapper
;
import
cn.sh.stc.sict.cloud.upms.dto.UserDTO
;
import
cn.sh.stc.sict.cloud.upms.dto.UserDTO
;
import
cn.sh.stc.sict.cloud.upms.dto.UserInfo
;
import
cn.sh.stc.sict.cloud.upms.dto.UserInfo
;
import
cn.sh.stc.sict.cloud.upms.model.HpUserRole
;
import
cn.sh.stc.sict.cloud.upms.model.SysUserBase
;
import
cn.sh.stc.sict.cloud.upms.model.SysUserBase
;
import
cn.sh.stc.sict.cloud.upms.service.HpUserRoleService
;
import
cn.sh.stc.sict.cloud.upms.service.HpUserRoleService
;
import
cn.sh.stc.sict.cloud.upms.service.SysUserBaseService
;
import
cn.sh.stc.sict.cloud.upms.service.SysUserBaseService
;
...
@@ -28,8 +27,6 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
...
@@ -28,8 +27,6 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import
org.springframework.security.crypto.password.PasswordEncoder
;
import
org.springframework.security.crypto.password.PasswordEncoder
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
@Slf4j
@Slf4j
@Service
(
"sysUserBaseService"
)
@Service
(
"sysUserBaseService"
)
@AllArgsConstructor
@AllArgsConstructor
...
@@ -74,6 +71,7 @@ public class SysUserBaseServiceImpl extends ServiceImpl<SysUserBaseMapper, SysUs
...
@@ -74,6 +71,7 @@ public class SysUserBaseServiceImpl extends ServiceImpl<SysUserBaseMapper, SysUs
private
UserInfo
getBySSBToken
(
String
source
,
String
token
)
{
private
UserInfo
getBySSBToken
(
String
source
,
String
token
)
{
WDUserInfo
wdUser
=
SsbUtil
.
getUserInfo
(
token
);
WDUserInfo
wdUser
=
SsbUtil
.
getUserInfo
(
token
);
log
.
error
(
"ssb.login.wdUser = {}"
,
JSONUtil
.
toJsonStr
(
wdUser
));
if
(
ObjectUtil
.
isNull
(
wdUser
)
||
StrUtil
.
isBlank
(
wdUser
.
getMobile
()))
{
if
(
ObjectUtil
.
isNull
(
wdUser
)
||
StrUtil
.
isBlank
(
wdUser
.
getMobile
()))
{
return
null
;
return
null
;
}
}
...
@@ -83,9 +81,9 @@ public class SysUserBaseServiceImpl extends ServiceImpl<SysUserBaseMapper, SysUs
...
@@ -83,9 +81,9 @@ public class SysUserBaseServiceImpl extends ServiceImpl<SysUserBaseMapper, SysUs
// 未注册用户默认注册
// 未注册用户默认注册
if
(
user
==
null
)
{
if
(
user
==
null
)
{
user
=
new
SysUserBase
();
user
=
new
SysUserBase
();
user
.
setUserName
(
wdUser
.
get
Mobil
e
());
user
.
setUserName
(
wdUser
.
get
Usernam
e
());
user
.
setOpenId
(
wdUser
.
getMobile
());
user
.
setOpenId
(
wdUser
.
getMobile
());
user
.
setName
(
wdUser
.
get
Usern
ame
());
user
.
setName
(
wdUser
.
get
N
ame
());
user
.
setIdCard
(
wdUser
.
getPersoncard
());
user
.
setIdCard
(
wdUser
.
getPersoncard
());
user
.
setSex
(
wdUser
.
getGender
());
user
.
setSex
(
wdUser
.
getGender
());
user
.
setHeadimg
(
wdUser
.
getAvatar
());
user
.
setHeadimg
(
wdUser
.
getAvatar
());
...
@@ -94,7 +92,7 @@ public class SysUserBaseServiceImpl extends ServiceImpl<SysUserBaseMapper, SysUs
...
@@ -94,7 +92,7 @@ public class SysUserBaseServiceImpl extends ServiceImpl<SysUserBaseMapper, SysUs
user
.
setPasswd
(
ENCODER
.
encode
(
Constant
.
DEFAULT_PASSWORD
));
user
.
setPasswd
(
ENCODER
.
encode
(
Constant
.
DEFAULT_PASSWORD
));
user
.
setPhone
(
wdUser
.
getMobile
());
user
.
setPhone
(
wdUser
.
getMobile
());
this
.
save
(
user
);
this
.
save
(
user
);
List
<
WDUserCardInfo
>
cardList
=
SsbUtil
.
getUserCardInfoList
(
token
);
//
List<WDUserCardInfo> cardList = SsbUtil.getUserCardInfoList(token);
}
}
UserInfo
info
=
new
UserInfo
();
UserInfo
info
=
new
UserInfo
();
...
...
smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hpgp/model/HpgpBusyIdlePrediction.java
View file @
21fa2527
package
cn
.
sh
.
stc
.
sict
.
theme
.
hpgp
.
model
;
package
cn
.
sh
.
stc
.
sict
.
theme
.
hpgp
.
model
;
import
java.util.Date
;
import
cn.sh.stc.sict.cloud.common.core.util.NumberUtil
;
import
com.baomidou.mybatisplus.annotation.FieldFill
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.extension.activerecord.Model
;
import
com.baomidou.mybatisplus.extension.activerecord.Model
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.EqualsAndHashCode
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
/**
* 黄浦全科导诊——忙闲预测(HpgpBusyIdle_ prediction)表实体类
* 黄浦全科导诊——忙闲预测(HpgpBusyIdle_ prediction)表实体类
...
@@ -18,22 +20,64 @@ import java.io.Serializable;
...
@@ -18,22 +20,64 @@ import java.io.Serializable;
@Data
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@EqualsAndHashCode
(
callSuper
=
true
)
public
class
HpgpBusyIdlePrediction
extends
Model
<
HpgpBusyIdlePrediction
>
{
public
class
HpgpBusyIdlePrediction
extends
Model
<
HpgpBusyIdlePrediction
>
{
private
Long
id
;
//医院代码
//医院代码
@ApiModelProperty
(
hidden
=
false
,
value
=
"医院代码"
)
@ApiModelProperty
(
value
=
"医院代码"
)
private
String
hospitalCode
;
private
String
hospitalCode
;
//医院名称
//医院名称
@ApiModelProperty
(
hidden
=
false
,
value
=
"医院名称"
)
@ApiModelProperty
(
value
=
"医院名称"
)
private
String
hospitalName
;
private
String
hospitalName
;
private
String
oneDeptCode
;
//科室代码
//科室代码
@ApiModelProperty
(
hidden
=
false
,
value
=
"科室代码"
)
@ApiModelProperty
(
value
=
"科室代码"
)
private
String
deptCode
;
private
String
deptCode
;
//科室名称
//科室名称
@ApiModelProperty
(
hidden
=
false
,
value
=
"科室名称"
)
@ApiModelProperty
(
value
=
"科室名称"
)
private
String
deptName
;
private
String
deptName
;
//预测日期
//预测日期
@ApiModelProperty
(
hidden
=
false
,
value
=
"预测日期"
)
@ApiModelProperty
(
value
=
"预测日期"
)
private
Date
predictionDate
;
private
Date
predictionDate
;
// 总号源数量
private
Integer
reserveOrderNum
;
// 可预约号源数量
private
Integer
remainNum
;
//忙闲评分
//忙闲评分
@ApiModelProperty
(
hidden
=
false
,
value
=
"忙闲评分"
)
@ApiModelProperty
(
value
=
"忙闲评分"
)
private
Integer
score
;
private
Integer
score
;
@TableField
(
fill
=
FieldFill
.
INSERT
)
private
Date
createTime
;
@TableField
(
fill
=
FieldFill
.
UPDATE
)
private
Date
updateTime
;
/**
* 获取主键值
*
* @return 主键值
*/
@Override
protected
Serializable
pkVal
()
{
return
this
.
id
;
}
// 可用号源 / 号源
// >=0.5 0- 闲 -绿色
// 0.2-0.5 1-忙碌-黄色
// <=0.2 2-非常忙碌-红色
// 无号院 -1 灰色
public
void
setScoreByNum
()
{
if
(
NumberUtil
.
isNotNullOrZero
(
this
.
reserveOrderNum
))
{
double
roate
=
this
.
remainNum
*
1.0
/
this
.
reserveOrderNum
;
if
(
roate
>=
0.5
)
{
this
.
setScore
(
0
);
}
else
if
(
roate
>
0.2
&&
roate
<
0.5
)
{
this
.
setScore
(
1
);
}
else
{
this
.
setScore
(
2
);
}
}
else
{
this
.
setScore
(-
1
);
}
}
}
}
smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hpgp/service/HpgpBusyIdlePredictionService.java
View file @
21fa2527
package
cn
.
sh
.
stc
.
sict
.
theme
.
hpgp
.
service
;
package
cn
.
sh
.
stc
.
sict
.
theme
.
hpgp
.
service
;
import
cn.sh.stc.sict.theme.hpgp.model.HpgpBusyIdlePrediction
;
import
cn.sh.stc.sict.theme.hpgp.model.HpgpBusyIdlePrediction
;
import
cn.sh.stc.sict.theme.hpgp.
vo.DeptPredictionVO
;
import
cn.sh.stc.sict.theme.hpgp.
model.HpgpDepartmentRank
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
/**
/**
...
@@ -20,5 +21,7 @@ public interface HpgpBusyIdlePredictionService extends IService<HpgpBusyIdlePred
...
@@ -20,5 +21,7 @@ public interface HpgpBusyIdlePredictionService extends IService<HpgpBusyIdlePred
* @param deptName 标准科室名称
* @param deptName 标准科室名称
* @return 忙闲医院科室
* @return 忙闲医院科室
*/
*/
List
<
DeptPredictionVO
>
busyIdlePrediction
(
String
deptName
);
List
<
HpgpBusyIdlePrediction
>
busyIdlePrediction
(
String
deptName
);
void
statisticResourceInfo
(
HpgpDepartmentRank
dept
,
Date
startDate
,
Date
endDate
);
}
}
smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hpgp/service/impl/HpgpBusyIdlePredictionServiceImpl.java
View file @
21fa2527
...
@@ -5,31 +5,23 @@ import cn.hutool.core.collection.CollectionUtil;
...
@@ -5,31 +5,23 @@ import cn.hutool.core.collection.CollectionUtil;
import
cn.hutool.core.date.DatePattern
;
import
cn.hutool.core.date.DatePattern
;
import
cn.hutool.core.date.DateTime
;
import
cn.hutool.core.date.DateTime
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.db.DaoTemplate
;
import
cn.hutool.json.JSONArray
;
import
cn.hutool.json.JSONUtil
;
import
cn.hutool.json.JSONUtil
;
import
cn.sh.stc.sict.cloud.common.core.constant.RedisCacheConstant
;
import
cn.sh.stc.sict.cloud.common.core.util.NumberUtil
;
import
cn.sh.stc.sict.cloud.common.core.util.NumberUtil
;
import
cn.sh.stc.sict.cloud.common.core.util.R
;
import
cn.sh.stc.sict.theme.hpgp.dao.HpgpBusyIdlePredictionMapper
;
import
cn.sh.stc.sict.theme.hpgp.dao.HpgpBusyIdlePredictionMapper
;
import
cn.sh.stc.sict.theme.hpgp.dao.HpgpDepartmentRankMapper
;
import
cn.sh.stc.sict.theme.hpgp.dao.HpgpDepartmentRankMapper
;
import
cn.sh.stc.sict.theme.hpgp.model.HpgpBusyIdlePrediction
;
import
cn.sh.stc.sict.theme.hpgp.model.HpgpBusyIdlePrediction
;
import
cn.sh.stc.sict.theme.hpgp.model.HpgpDepartmentRank
;
import
cn.sh.stc.sict.theme.hpgp.model.HpgpDepartmentRank
;
import
cn.sh.stc.sict.theme.hpgp.service.HpgpBusyIdlePredictionService
;
import
cn.sh.stc.sict.theme.hpgp.service.HpgpBusyIdlePredictionService
;
import
cn.sh.stc.sict.theme.hpgp.vo.DeptPredictionVO
;
import
cn.sh.stc.sict.theme.hpgp.vo.DeptRankVO
;
import
cn.sh.stc.sict.theme.hpgp.vo.DeptRankVO
;
import
cn.sh.stc.sict.theme.hphy.wd.*
;
import
cn.sh.stc.sict.theme.hphy.wd.*
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
lombok.AllArgsConstructor
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.util.*
;
import
java.util.*
;
import
java.util.concurrent.TimeUnit
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
/**
/**
...
@@ -43,10 +35,9 @@ import java.util.stream.Collectors;
...
@@ -43,10 +35,9 @@ import java.util.stream.Collectors;
@Service
(
"hpgpBusyIdlPredictionService"
)
@Service
(
"hpgpBusyIdlPredictionService"
)
public
class
HpgpBusyIdlePredictionServiceImpl
extends
ServiceImpl
<
HpgpBusyIdlePredictionMapper
,
HpgpBusyIdlePrediction
>
implements
HpgpBusyIdlePredictionService
{
public
class
HpgpBusyIdlePredictionServiceImpl
extends
ServiceImpl
<
HpgpBusyIdlePredictionMapper
,
HpgpBusyIdlePrediction
>
implements
HpgpBusyIdlePredictionService
{
private
final
HpgpDepartmentRankMapper
departmentRankMapper
;
private
final
HpgpDepartmentRankMapper
departmentRankMapper
;
private
final
StringRedisTemplate
stringRedisTemplate
;
@Override
@Override
public
List
<
DeptPredictionVO
>
busyIdlePrediction
(
String
deptName
)
{
public
List
<
HpgpBusyIdlePrediction
>
busyIdlePrediction
(
String
deptName
)
{
// 查询科室排名
// 查询科室排名
// 组装医院代码、科室代码
// 组装医院代码、科室代码
// 查询医院忙闲
// 查询医院忙闲
...
@@ -55,79 +46,147 @@ public class HpgpBusyIdlePredictionServiceImpl extends ServiceImpl<HpgpBusyIdleP
...
@@ -55,79 +46,147 @@ public class HpgpBusyIdlePredictionServiceImpl extends ServiceImpl<HpgpBusyIdleP
return
null
;
return
null
;
}
}
DateTime
startTime
=
DateUtil
.
date
();
DateTime
startTime
=
DateUtil
.
date
();
DateTime
endTime
=
DateUtil
.
offsetDay
(
DateUtil
.
date
(),
7
);
DateTime
endTime
=
DateUtil
.
offsetDay
(
DateUtil
.
date
(),
6
);
List
<
DeptPredictionVO
>
result
=
new
ArrayList
<>();
List
<
HpgpBusyIdlePrediction
>
result
=
new
ArrayList
<>();
rankList
.
forEach
(
rank
->
{
rankList
.
forEach
(
rank
->
{
List
<
DeptPredictionVO
>
rankResult
=
new
ArrayList
<>();
LambdaQueryWrapper
<
HpgpBusyIdlePrediction
>
wrapper
=
new
LambdaQueryWrapper
<>();
String
key
=
RedisCacheConstant
.
DEPT_NUM_SOURCE_RESULT
+
":"
+
rank
.
getHospitalCode
();
wrapper
.
eq
(
HpgpBusyIdlePrediction:
:
getHospitalCode
,
rank
.
getHospitalCode
())
if
(
StrUtil
.
isNotBlank
(
rank
.
getOneDeptCode
()))
{
.
eq
(
HpgpBusyIdlePrediction:
:
getOneDeptCode
,
rank
.
getOneDeptCode
())
key
=
key
+
":"
+
rank
.
getOneDeptCode
();
.
eq
(
HpgpBusyIdlePrediction:
:
getDeptCode
,
rank
.
getDeptCode
())
}
.
between
(
HpgpBusyIdlePrediction:
:
getPredictionDate
,
DateUtil
.
format
(
startTime
,
DatePattern
.
NORM_DATE_FORMAT
),
DateUtil
.
format
(
endTime
,
DatePattern
.
NORM_DATE_FORMAT
))
if
(
StrUtil
.
isNotBlank
(
rank
.
getSubDeptCode
()))
{
.
orderByAsc
(
HpgpBusyIdlePrediction:
:
getPredictionDate
);
key
=
key
+
":"
+
rank
.
getSubDeptCode
();
List
<
HpgpBusyIdlePrediction
>
list
=
this
.
list
(
wrapper
);
}
if
(
CollUtil
.
isNotEmpty
(
list
))
{
if
(
stringRedisTemplate
.
hasKey
(
key
))
{
Map
<
Date
,
HpgpBusyIdlePrediction
>
dateMap
=
list
.
stream
().
collect
(
Collectors
.
groupingBy
(
HpgpBusyIdlePrediction:
:
getPredictionDate
,
Collectors
.
collectingAndThen
(
Collectors
.
toList
(),
x
->
x
.
get
(
0
))));
String
str
=
stringRedisTemplate
.
opsForValue
().
get
(
key
);
JSONArray
array
=
JSONUtil
.
parseArray
(
str
);
result
.
addAll
(
JSONUtil
.
toList
(
array
,
DeptPredictionVO
.
class
));
}
else
{
DeptInfo
deptInfo
=
new
DeptInfo
();
deptInfo
.
setHosOrgCode
(
rank
.
getHospitalCode
());
deptInfo
.
setOneDeptCode
(
rank
.
getOneDeptCode
());
deptInfo
.
setDeptCode
(
rank
.
getSubDeptCode
());
List
<
OutPatInfo
>
outPatInfo
=
WanDaHttpUtil
.
getResourceOutPatInfo
(
deptInfo
);
if
(
CollUtil
.
isNotEmpty
(
outPatInfo
))
{
Map
<
String
,
DeptPredictionVO
>
dateResultMap
=
new
HashMap
<>();
outPatInfo
.
forEach
(
pat
->
{
NumSourceInfo
numSourceInfo
=
new
NumSourceInfo
();
numSourceInfo
.
setHosOrgCode
(
rank
.
getHospitalCode
());
numSourceInfo
.
setOneDeptCode
(
rank
.
getOneDeptCode
());
numSourceInfo
.
setDeptCode
(
rank
.
getSubDeptCode
());
numSourceInfo
.
setStartTime
(
DateUtil
.
format
(
startTime
,
DatePattern
.
NORM_DATE_FORMAT
));
numSourceInfo
.
setEndTime
(
DateUtil
.
format
(
endTime
,
DatePattern
.
NORM_DATE_FORMAT
));
numSourceInfo
.
setOrderType
(
WanDaConstant
.
ORDER_TYPE_CLINC
);
numSourceInfo
.
setPatient_type
(
WanDaConstant
.
PATIENT_TYPE_NORMAL
);
numSourceInfo
.
setResourceCode
(
pat
.
getResourceCode
());
List
<
NumSourceInfo
>
orderNumInfo
=
WanDaHttpUtil
.
getOrderNumInfo
(
numSourceInfo
);
if
(
CollUtil
.
isNotEmpty
(
orderNumInfo
))
{
Map
<
String
,
List
<
NumSourceInfo
>>
dateMap
=
orderNumInfo
.
stream
().
collect
(
Collectors
.
groupingBy
(
NumSourceInfo:
:
getScheduleDate
));
dateMap
.
forEach
((
date
,
numList
)
->
{
DeptPredictionVO
vo
=
dateResultMap
.
getOrDefault
(
date
,
new
DeptPredictionVO
());
vo
.
setDeptCode
(
rank
.
getDeptCode
());
vo
.
setDeptName
(
rank
.
getDeptName
());
vo
.
setHospitalName
(
rank
.
getHospitalName
());
vo
.
setHospitalCode
(
rank
.
getHospitalCode
());
vo
.
setPredictionDate
(
DateUtil
.
parseDate
(
date
));
int
reserveOrderNum
=
numList
.
stream
().
mapToInt
(
NumSourceInfo:
:
getReserveOrderNum
).
sum
();
vo
.
setReserveOrderNum
(
NumberUtil
.
isNullOrZero
(
vo
.
getReserveOrderNum
())
?
reserveOrderNum
:
vo
.
getReserveOrderNum
()
+
reserveOrderNum
);
int
remain
=
numList
.
stream
().
mapToInt
(
NumSourceInfo:
:
getRemainNum
).
sum
();
vo
.
setRemainNum
(
NumberUtil
.
isNullOrZero
(
vo
.
getRemainNum
())
?
remain
:
vo
.
getRemainNum
()
+
remain
);
vo
.
setScoreByNum
();
dateResultMap
.
put
(
date
,
vo
);
});
}
});
dateResultMap
.
forEach
((
k
,
v
)
->
{
rankResult
.
add
(
v
);
});
}
// 生成无号源信息
// 生成无号源信息
if
(
CollUtil
.
isEmpty
(
rankResult
))
{
for
(
Date
i
=
startTime
;
DateUtil
.
compare
(
i
,
endTime
)
<
1
;
i
=
DateUtil
.
offsetDay
(
i
,
1
))
{
for
(
Date
i
=
DateUtil
.
offsetDay
(
startTime
,
1
);
DateUtil
.
compare
(
i
,
endTime
)
<
1
;
i
=
DateUtil
.
offsetDay
(
i
,
1
))
{
Date
key
=
DateUtil
.
beginOfDay
(
i
);
DeptPredictionVO
vo
=
new
DeptPredictionVO
();
if
(
dateMap
.
containsKey
(
key
))
{
vo
.
setDeptCode
(
rank
.
getDeptCode
());
result
.
add
(
dateMap
.
get
(
key
));
vo
.
setDeptName
(
rank
.
getDeptName
());
}
else
{
vo
.
setHospitalName
(
rank
.
getHospitalName
());
result
.
add
(
this
.
getNoneSourcePredictionInfo
(
rank
,
i
));
vo
.
setHospitalCode
(
rank
.
getHospitalCode
());
vo
.
setPredictionDate
(
i
);
vo
.
setScoreByNum
();
rankResult
.
add
(
vo
);
}
}
}
}
stringRedisTemplate
.
opsForValue
().
set
(
key
,
JSONUtil
.
toJsonStr
(
rankResult
),
4
,
TimeUnit
.
HOURS
);
}
else
{
result
.
addAll
(
rankResult
);
// 生成无号源信息
for
(
Date
i
=
startTime
;
DateUtil
.
compare
(
i
,
endTime
)
<
1
;
i
=
DateUtil
.
offsetDay
(
i
,
1
))
{
result
.
add
(
this
.
getNoneSourcePredictionInfo
(
rank
,
i
));
}
}
}
});
});
return
result
;
return
result
;
}
}
private
HpgpBusyIdlePrediction
getNoneSourcePredictionInfo
(
DeptRankVO
rank
,
Date
i
)
{
HpgpBusyIdlePrediction
vo
=
new
HpgpBusyIdlePrediction
();
vo
.
setDeptCode
(
rank
.
getDeptCode
());
vo
.
setDeptName
(
rank
.
getDeptName
());
vo
.
setHospitalName
(
rank
.
getHospitalName
());
vo
.
setHospitalCode
(
rank
.
getHospitalCode
());
vo
.
setPredictionDate
(
i
);
vo
.
setScoreByNum
();
return
vo
;
}
@Async
@Override
public
void
statisticResourceInfo
(
HpgpDepartmentRank
dept
,
Date
startDate
,
Date
endDate
)
{
DeptInfo
deptInfo
=
new
DeptInfo
();
deptInfo
.
setHosOrgCode
(
dept
.
getHospitalCode
());
deptInfo
.
setOneDeptCode
(
dept
.
getOneDeptCode
());
deptInfo
.
setDeptCode
(
dept
.
getDeptCode
());
List
<
OutPatInfo
>
outList
=
WanDaHttpUtil
.
getResourceOutPatInfo
(
deptInfo
);
List
<
DoctInfo
>
docList
=
WanDaHttpUtil
.
getResourceDoctInfo
(
deptInfo
);
if
(
CollUtil
.
isEmpty
(
outList
)
&&
CollUtil
.
isEmpty
(
docList
))
{
return
;
}
Map
<
String
,
HpgpBusyIdlePrediction
>
dateResultMap
=
new
HashMap
<>();
this
.
getOutResourceInfo
(
dept
,
outList
,
dateResultMap
,
startDate
,
endDate
);
this
.
getDocResourceInfo
(
dept
,
docList
,
dateResultMap
,
startDate
,
endDate
);
if
(
CollUtil
.
isNotEmpty
(
dateResultMap
))
{
dateResultMap
.
forEach
((
k
,
v
)
->
{
LambdaQueryWrapper
<
HpgpBusyIdlePrediction
>
wrapper
=
new
LambdaQueryWrapper
<>();
wrapper
.
eq
(
HpgpBusyIdlePrediction:
:
getHospitalCode
,
v
.
getHospitalCode
())
.
eq
(
HpgpBusyIdlePrediction:
:
getOneDeptCode
,
v
.
getOneDeptCode
())
.
eq
(
HpgpBusyIdlePrediction:
:
getDeptCode
,
v
.
getDeptCode
())
.
eq
(
HpgpBusyIdlePrediction:
:
getPredictionDate
,
v
.
getPredictionDate
());
this
.
saveOrUpdate
(
v
,
wrapper
);
});
}
}
private
void
getDocResourceInfo
(
HpgpDepartmentRank
dept
,
List
<
DoctInfo
>
docList
,
Map
<
String
,
HpgpBusyIdlePrediction
>
dateResultMap
,
Date
startDate
,
Date
endDate
)
{
if
(
CollUtil
.
isNotEmpty
(
docList
))
{
docList
.
forEach
(
doc
->
{
NumSourceInfo
numSourceInfo
=
new
NumSourceInfo
();
numSourceInfo
.
setHosOrgCode
(
dept
.
getHospitalCode
());
numSourceInfo
.
setOneDeptCode
(
dept
.
getOneDeptCode
());
numSourceInfo
.
setDeptCode
(
dept
.
getDeptCode
());
numSourceInfo
.
setStartTime
(
DateUtil
.
format
(
startDate
,
DatePattern
.
NORM_DATE_FORMAT
));
numSourceInfo
.
setEndTime
(
DateUtil
.
format
(
endDate
,
DatePattern
.
NORM_DATE_FORMAT
));
numSourceInfo
.
setOrderType
(
WanDaConstant
.
ORDER_TYPE_OUTP
);
numSourceInfo
.
setPatient_type
(
WanDaConstant
.
PATIENT_TYPE_NORMAL
);
numSourceInfo
.
setResourceCode
(
doc
.
getResourceCode
());
List
<
NumSourceInfo
>
orderNumInfo
=
WanDaHttpUtil
.
getOrderNumInfo
(
numSourceInfo
);
if
(
CollUtil
.
isNotEmpty
(
orderNumInfo
))
{
Map
<
String
,
List
<
NumSourceInfo
>>
dateMap
=
orderNumInfo
.
stream
().
collect
(
Collectors
.
groupingBy
(
NumSourceInfo:
:
getScheduleDate
));
dateMap
.
forEach
((
date
,
numList
)
->
{
HpgpBusyIdlePrediction
vo
=
dateResultMap
.
getOrDefault
(
date
,
new
HpgpBusyIdlePrediction
());
vo
.
setDeptCode
(
dept
.
getDeptCode
());
vo
.
setDeptName
(
dept
.
getDeptName
());
vo
.
setHospitalName
(
dept
.
getHospitalName
());
vo
.
setHospitalCode
(
dept
.
getHospitalCode
());
vo
.
setPredictionDate
(
DateUtil
.
parseDate
(
date
));
vo
.
setOneDeptCode
(
dept
.
getOneDeptCode
());
int
reserveOrderNum
=
numList
.
stream
().
mapToInt
(
NumSourceInfo:
:
getReserveOrderNum
).
sum
();
vo
.
setReserveOrderNum
(
NumberUtil
.
isNullOrZero
(
vo
.
getReserveOrderNum
())
?
reserveOrderNum
:
vo
.
getReserveOrderNum
()
+
reserveOrderNum
);
int
remain
=
numList
.
stream
().
mapToInt
(
NumSourceInfo:
:
getRemainNum
).
sum
();
vo
.
setRemainNum
(
NumberUtil
.
isNullOrZero
(
vo
.
getRemainNum
())
?
remain
:
vo
.
getRemainNum
()
+
remain
);
vo
.
setScoreByNum
();
dateResultMap
.
put
(
date
,
vo
);
});
}
});
}
}
private
void
getOutResourceInfo
(
HpgpDepartmentRank
dept
,
List
<
OutPatInfo
>
outList
,
Map
<
String
,
HpgpBusyIdlePrediction
>
dateResultMap
,
Date
startDate
,
Date
endDate
)
{
if
(
CollUtil
.
isNotEmpty
(
outList
))
{
outList
.
forEach
(
pat
->
{
NumSourceInfo
numSourceInfo
=
new
NumSourceInfo
();
numSourceInfo
.
setHosOrgCode
(
dept
.
getHospitalCode
());
numSourceInfo
.
setOneDeptCode
(
dept
.
getOneDeptCode
());
numSourceInfo
.
setDeptCode
(
dept
.
getDeptCode
());
numSourceInfo
.
setStartTime
(
DateUtil
.
format
(
startDate
,
DatePattern
.
NORM_DATE_FORMAT
));
numSourceInfo
.
setEndTime
(
DateUtil
.
format
(
endDate
,
DatePattern
.
NORM_DATE_FORMAT
));
numSourceInfo
.
setOrderType
(
WanDaConstant
.
ORDER_TYPE_CLINC
);
numSourceInfo
.
setPatient_type
(
WanDaConstant
.
PATIENT_TYPE_NORMAL
);
numSourceInfo
.
setResourceCode
(
pat
.
getResourceCode
());
List
<
NumSourceInfo
>
orderNumInfo
=
WanDaHttpUtil
.
getOrderNumInfo
(
numSourceInfo
);
if
(
CollUtil
.
isNotEmpty
(
orderNumInfo
))
{
Map
<
String
,
List
<
NumSourceInfo
>>
dateMap
=
orderNumInfo
.
stream
().
collect
(
Collectors
.
groupingBy
(
NumSourceInfo:
:
getScheduleDate
));
dateMap
.
forEach
((
date
,
numList
)
->
{
HpgpBusyIdlePrediction
vo
=
dateResultMap
.
getOrDefault
(
date
,
new
HpgpBusyIdlePrediction
());
vo
.
setDeptCode
(
dept
.
getDeptCode
());
vo
.
setDeptName
(
dept
.
getDeptName
());
vo
.
setHospitalName
(
dept
.
getHospitalName
());
vo
.
setHospitalCode
(
dept
.
getHospitalCode
());
vo
.
setPredictionDate
(
DateUtil
.
parseDate
(
date
));
vo
.
setOneDeptCode
(
dept
.
getOneDeptCode
());
int
reserveOrderNum
=
numList
.
stream
().
mapToInt
(
NumSourceInfo:
:
getReserveOrderNum
).
sum
();
vo
.
setReserveOrderNum
(
NumberUtil
.
isNullOrZero
(
vo
.
getReserveOrderNum
())
?
reserveOrderNum
:
vo
.
getReserveOrderNum
()
+
reserveOrderNum
);
int
remain
=
numList
.
stream
().
mapToInt
(
NumSourceInfo:
:
getRemainNum
).
sum
();
vo
.
setRemainNum
(
NumberUtil
.
isNullOrZero
(
vo
.
getRemainNum
())
?
remain
:
vo
.
getRemainNum
()
+
remain
);
vo
.
setScoreByNum
();
dateResultMap
.
put
(
date
,
vo
);
});
}
});
}
}
}
}
smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hpgp/service/impl/HpgpDepartmentRankServiceImpl.java
View file @
21fa2527
...
@@ -2,11 +2,14 @@ package cn.sh.stc.sict.theme.hpgp.service.impl;
...
@@ -2,11 +2,14 @@ package cn.sh.stc.sict.theme.hpgp.service.impl;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.json.JSONUtil
;
import
cn.hutool.json.JSONUtil
;
import
cn.sh.stc.sict.theme.hpgp.model.HpgpBusyIdlePrediction
;
import
cn.sh.stc.sict.theme.hpgp.service.HpgpBusyIdlePredictionService
;
import
cn.sh.stc.sict.theme.hphy.wd.*
;
import
cn.sh.stc.sict.theme.hphy.wd.*
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
cn.sh.stc.sict.theme.hpgp.dao.HpgpDepartmentRankMapper
;
import
cn.sh.stc.sict.theme.hpgp.dao.HpgpDepartmentRankMapper
;
import
cn.sh.stc.sict.theme.hpgp.model.HpgpDepartmentRank
;
import
cn.sh.stc.sict.theme.hpgp.model.HpgpDepartmentRank
;
import
cn.sh.stc.sict.theme.hpgp.service.HpgpDepartmentRankService
;
import
cn.sh.stc.sict.theme.hpgp.service.HpgpDepartmentRankService
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
@@ -20,9 +23,11 @@ import java.util.List;
...
@@ -20,9 +23,11 @@ import java.util.List;
* @since 2022-01-14 09:56:47
* @since 2022-01-14 09:56:47
*/
*/
@Slf4j
@Slf4j
@AllArgsConstructor
@Service
(
"hpgpDepartmentRankService"
)
@Service
(
"hpgpDepartmentRankService"
)
public
class
HpgpDepartmentRankServiceImpl
extends
ServiceImpl
<
HpgpDepartmentRankMapper
,
HpgpDepartmentRank
>
implements
HpgpDepartmentRankService
{
public
class
HpgpDepartmentRankServiceImpl
extends
ServiceImpl
<
HpgpDepartmentRankMapper
,
HpgpDepartmentRank
>
implements
HpgpDepartmentRankService
{
@Override
@Override
public
void
updateResource
()
{
public
void
updateResource
()
{
List
<
HpgpDepartmentRank
>
deptList
=
this
.
list
();
List
<
HpgpDepartmentRank
>
deptList
=
this
.
list
();
...
...
smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hpgp/vo/DeptPredictionVO.java
deleted
100644 → 0
View file @
b75530da
package
cn
.
sh
.
stc
.
sict
.
theme
.
hpgp
.
vo
;
import
cn.sh.stc.sict.cloud.common.core.util.NumberUtil
;
import
cn.sh.stc.sict.theme.hpgp.model.HpgpBusyIdlePrediction
;
import
lombok.Data
;
@Data
public
class
DeptPredictionVO
extends
HpgpBusyIdlePrediction
{
private
Integer
reserveOrderNum
;
private
Integer
remainNum
;
// 可用号源 / 号源
// >=0.5 0- 闲 -绿色
// 0.2-0.5 1-忙碌-黄色
// <=0.2 2-非常忙碌-红色
// 无号院 -1 灰色
public
void
setScoreByNum
()
{
if
(
NumberUtil
.
isNotNullOrZero
(
this
.
reserveOrderNum
))
{
double
roate
=
this
.
remainNum
*
1.0
/
this
.
reserveOrderNum
;
if
(
roate
>=
0.5
)
{
this
.
setScore
(
0
);
}
else
if
(
roate
>
0.2
&&
roate
<
0.5
)
{
this
.
setScore
(
1
);
}
else
{
this
.
setScore
(
2
);
}
}
else
{
this
.
setScore
(-
1
);
}
}
}
smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/controller/mp/HpDeptInfoController.java
View file @
21fa2527
package
cn
.
sh
.
stc
.
sict
.
theme
.
hphy
.
controller
.
mp
;
package
cn
.
sh
.
stc
.
sict
.
theme
.
hphy
.
controller
.
mp
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.sh.stc.sict.cloud.common.core.util.R
;
import
cn.sh.stc.sict.cloud.common.core.util.R
;
import
cn.sh.stc.sict.theme.hpgp.model.HpgpDepartmentRank
;
import
cn.sh.stc.sict.theme.hpgp.model.HpgpDepartmentRank
;
import
cn.sh.stc.sict.theme.hpgp.service.HpgpBusyIdlePredictionService
;
import
cn.sh.stc.sict.theme.hpgp.service.HpgpDepartmentRankService
;
import
cn.sh.stc.sict.theme.hpgp.service.HpgpDepartmentRankService
;
import
cn.sh.stc.sict.theme.hphy.model.HpDeptInfo
;
import
cn.sh.stc.sict.theme.hphy.model.HpDeptInfo
;
import
cn.sh.stc.sict.theme.hphy.service.HpDeptInfoService
;
import
cn.sh.stc.sict.theme.hphy.service.HpDeptInfoService
;
...
@@ -14,6 +16,7 @@ import io.swagger.annotations.ApiParam;
...
@@ -14,6 +16,7 @@ import io.swagger.annotations.ApiParam;
import
lombok.AllArgsConstructor
;
import
lombok.AllArgsConstructor
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
/**
/**
...
@@ -32,21 +35,22 @@ public class HpDeptInfoController extends ApiController {
...
@@ -32,21 +35,22 @@ public class HpDeptInfoController extends ApiController {
*/
*/
private
final
HpDeptInfoService
hpDeptInfoService
;
private
final
HpDeptInfoService
hpDeptInfoService
;
private
final
HpgpDepartmentRankService
hpgpDepartmentRankService
;
private
final
HpgpDepartmentRankService
hpgpDepartmentRankService
;
private
final
HpgpBusyIdlePredictionService
hpgpBusyIdlePredictionService
;
@ApiOperation
(
"科室医生查询接口"
)
@ApiOperation
(
"科室医生查询接口"
)
@GetMapping
@GetMapping
public
R
<?>
getDeptDoctors
(
@ApiParam
(
"医院代码"
)
@RequestParam
(
"hospitalCode"
)
String
hospitalCode
,
public
R
<?>
getDeptDoctors
(
@ApiParam
(
"医院代码"
)
@RequestParam
(
"hospitalCode"
)
String
hospitalCode
,
@ApiParam
(
"科室代码"
)
@RequestParam
(
"deptCode"
)
String
deptCode
){
@ApiParam
(
"科室代码"
)
@RequestParam
(
"deptCode"
)
String
deptCode
)
{
return
new
R
<>(
hpDeptInfoService
.
getDeptDoctors
(
hospitalCode
,
deptCode
));
return
new
R
<>(
hpDeptInfoService
.
getDeptDoctors
(
hospitalCode
,
deptCode
));
}
}
@ApiOperation
(
"更新科室号源信息"
)
@ApiOperation
(
"更新科室号源信息"
)
@PostMapping
(
"/wd/resource"
)
@PostMapping
(
"/wd/resource"
)
public
R
updateDeptResource
(){
public
R
updateDeptResource
()
{
List
<
HpDeptInfo
>
deptList
=
hpDeptInfoService
.
list
();
List
<
HpDeptInfo
>
deptList
=
hpDeptInfoService
.
list
();
deptList
.
forEach
(
dept
->
{
deptList
.
forEach
(
dept
->
{
if
(
StrUtil
.
isEmpty
(
dept
.
getOneDeptCode
())
||
StrUtil
.
isEmpty
(
dept
.
getDeptCode
()))
{
if
(
StrUtil
.
isEmpty
(
dept
.
getOneDeptCode
())
||
StrUtil
.
isEmpty
(
dept
.
getDeptCode
()))
{
return
;
return
;
}
}
hpDeptInfoService
.
asyncUpdate
(
dept
);
hpDeptInfoService
.
asyncUpdate
(
dept
);
...
@@ -56,8 +60,23 @@ public class HpDeptInfoController extends ApiController {
...
@@ -56,8 +60,23 @@ public class HpDeptInfoController extends ApiController {
@ApiOperation
(
"更新科室排行表号源信息"
)
@ApiOperation
(
"更新科室排行表号源信息"
)
@PostMapping
(
"/rank/wd/resource"
)
@PostMapping
(
"/rank/wd/resource"
)
public
R
updateRankDeptResource
(){
public
R
updateRankDeptResource
()
{
hpgpDepartmentRankService
.
updateResource
();
hpgpDepartmentRankService
.
updateResource
();
return
new
R
();
return
new
R
();
}
}
@ApiOperation
(
"定时统计排行科室的号源信息"
)
@PostMapping
(
"/statistic/rank/wd/resource"
)
public
R
statisticRankDeptResourceInfo
()
{
List
<
HpgpDepartmentRank
>
deptList
=
hpgpDepartmentRankService
.
list
();
deptList
.
forEach
(
dept
->
{
if
(
StrUtil
.
isEmpty
(
dept
.
getOneDeptCode
())
||
StrUtil
.
isEmpty
(
dept
.
getDeptCode
()))
{
return
;
}
Date
startDate
=
DateUtil
.
date
();
Date
endDate
=
DateUtil
.
offsetDay
(
startDate
,
10
);
hpgpBusyIdlePredictionService
.
statisticResourceInfo
(
dept
,
startDate
,
endDate
);
});
return
new
R
();
}
}
}
smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/controller/mp/HphyPatientBaseController.java
View file @
21fa2527
...
@@ -3,6 +3,7 @@ package cn.sh.stc.sict.theme.hphy.controller.mp;
...
@@ -3,6 +3,7 @@ package cn.sh.stc.sict.theme.hphy.controller.mp;
import
cn.hutool.core.util.IdcardUtil
;
import
cn.hutool.core.util.IdcardUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.json.JSONUtil
;
import
cn.sh.stc.sict.cloud.common.core.constant.Constant
;
import
cn.sh.stc.sict.cloud.common.core.constant.Constant
;
import
cn.sh.stc.sict.cloud.common.core.constant.enums.LoginTypeEnum
;
import
cn.sh.stc.sict.cloud.common.core.constant.enums.LoginTypeEnum
;
import
cn.sh.stc.sict.cloud.common.core.dto.WDUserCardInfo
;
import
cn.sh.stc.sict.cloud.common.core.dto.WDUserCardInfo
;
...
@@ -103,7 +104,9 @@ public class HphyPatientBaseController {
...
@@ -103,7 +104,9 @@ public class HphyPatientBaseController {
*/
*/
@GetMapping
@GetMapping
public
R
getInfo
()
{
public
R
getInfo
()
{
log
.
error
(
"获取患者信息1"
);
CurrentUser
current
=
SecurityUtils
.
getCurrentUser
();
CurrentUser
current
=
SecurityUtils
.
getCurrentUser
();
log
.
error
(
"获取患者信息2, current = {}"
,
JSONUtil
.
toJsonStr
(
current
));
if
(
StrUtil
.
isBlank
(
current
.
getOpenId
()))
{
if
(
StrUtil
.
isBlank
(
current
.
getOpenId
()))
{
log
.
error
(
"openId 为空"
);
log
.
error
(
"openId 为空"
);
...
@@ -115,6 +118,7 @@ public class HphyPatientBaseController {
...
@@ -115,6 +118,7 @@ public class HphyPatientBaseController {
current
.
setGender
(
PatientConstant
.
getGender
(
base
.
getGender
()));
current
.
setGender
(
PatientConstant
.
getGender
(
base
.
getGender
()));
SecurityUtils
.
updateCurrent
(
current
);
SecurityUtils
.
updateCurrent
(
current
);
}
}
log
.
error
(
"获取患者信息2, base = {}"
,
JSONUtil
.
toJsonStr
(
base
));
return
new
R
(
base
);
return
new
R
(
base
);
}
}
...
@@ -123,6 +127,7 @@ public class HphyPatientBaseController {
...
@@ -123,6 +127,7 @@ public class HphyPatientBaseController {
@GetMapping
(
"/third-party"
)
@GetMapping
(
"/third-party"
)
public
R
getInfoByToken
(
@RequestParam
(
"source"
)
String
source
,
public
R
getInfoByToken
(
@RequestParam
(
"source"
)
String
source
,
@RequestParam
(
"token"
)
String
token
)
{
@RequestParam
(
"token"
)
String
token
)
{
log
.
error
(
"source = {}, token = {}"
,
source
,
token
);
CurrentUser
current
=
SecurityUtils
.
getCurrentUser
();
CurrentUser
current
=
SecurityUtils
.
getCurrentUser
();
if
(
StrUtil
.
isBlank
(
current
.
getOpenId
()))
{
if
(
StrUtil
.
isBlank
(
current
.
getOpenId
()))
{
...
@@ -130,9 +135,11 @@ public class HphyPatientBaseController {
...
@@ -130,9 +135,11 @@ public class HphyPatientBaseController {
}
}
// 获取患者信息
// 获取患者信息
HphyPatientBase
base
=
hphyPatientBaseService
.
getByOpenId
(
current
.
getOpenId
());
HphyPatientBase
base
=
hphyPatientBaseService
.
getByOpenId
(
current
.
getOpenId
());
log
.
error
(
"third-party.base1 = {}"
,
JSONUtil
.
toJsonStr
(
base
));
if
(
ObjectUtil
.
isNull
(
base
)
||
NumberUtil
.
isNullOrZero
(
base
.
getId
()))
{
if
(
ObjectUtil
.
isNull
(
base
)
||
NumberUtil
.
isNullOrZero
(
base
.
getId
()))
{
if
(
LoginTypeEnum
.
SSB
.
getType
().
equals
(
source
))
{
if
(
LoginTypeEnum
.
SSB
.
getType
().
equals
(
source
))
{
WDUserInfo
userInfo
=
SsbUtil
.
getUserInfo
(
token
);
WDUserInfo
userInfo
=
SsbUtil
.
getUserInfo
(
token
);
log
.
error
(
"wdUser = {}"
,
userInfo
);
List
<
WDUserCardInfo
>
cardList
=
SsbUtil
.
getUserCardInfoList
(
token
);
List
<
WDUserCardInfo
>
cardList
=
SsbUtil
.
getUserCardInfoList
(
token
);
base
=
hphyPatientBaseService
.
saveSSbInfo
(
current
,
userInfo
,
cardList
);
base
=
hphyPatientBaseService
.
saveSSbInfo
(
current
,
userInfo
,
cardList
);
hpPatientCardService
.
save
(
base
,
cardList
);
hpPatientCardService
.
save
(
base
,
cardList
);
...
...
smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/schedule/RefreshJob.java
View file @
21fa2527
package
cn
.
sh
.
stc
.
sict
.
theme
.
hphy
.
schedule
;
package
cn
.
sh
.
stc
.
sict
.
theme
.
hphy
.
schedule
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.sh.stc.sict.theme.hpgp.model.HpgpDepartmentRank
;
import
cn.sh.stc.sict.theme.hpgp.service.HpgpBusyIdlePredictionService
;
import
cn.sh.stc.sict.theme.hpgp.service.HpgpDepartmentRankService
;
import
cn.sh.stc.sict.theme.hphy.constant.DataConstant
;
import
cn.sh.stc.sict.theme.hphy.constant.DataConstant
;
import
cn.sh.stc.sict.theme.hphy.model.HpDeptInfo
;
import
cn.sh.stc.sict.theme.hphy.model.HpDeptInfo
;
import
cn.sh.stc.sict.theme.hphy.model.HpDocInfo
;
import
cn.sh.stc.sict.theme.hphy.model.HpDocInfo
;
...
@@ -21,6 +26,7 @@ import org.springframework.scheduling.annotation.Scheduled;
...
@@ -21,6 +26,7 @@ import org.springframework.scheduling.annotation.Scheduled;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
/**
/**
...
@@ -38,6 +44,8 @@ public class RefreshJob {
...
@@ -38,6 +44,8 @@ public class RefreshJob {
private
final
HpHosInfoService
hpHosInfoService
;
private
final
HpHosInfoService
hpHosInfoService
;
private
final
HpDeptInfoService
deptInfoService
;
private
final
HpDeptInfoService
deptInfoService
;
private
final
HpDocInfoService
docInfoService
;
private
final
HpDocInfoService
docInfoService
;
private
final
HpgpDepartmentRankService
hpgpDepartmentRankService
;
private
final
HpgpBusyIdlePredictionService
hpgpBusyIdlePredictionService
;
/**
/**
* 每月一日0点 更新医院信息
* 每月一日0点 更新医院信息
...
@@ -100,6 +108,23 @@ public class RefreshJob {
...
@@ -100,6 +108,23 @@ public class RefreshJob {
}
}
}
}
/**
* 每天中午12点,晚上12点,统计号源信息
*/
// @Scheduled(cron = "0 50 12 * * ? ")
@Scheduled
(
cron
=
"0 0 0,12 * * ? "
)
public
void
statisticRankDeptResourceInfo
()
{
List
<
HpgpDepartmentRank
>
deptList
=
hpgpDepartmentRankService
.
list
();
deptList
.
forEach
(
dept
->
{
if
(
StrUtil
.
isEmpty
(
dept
.
getOneDeptCode
())
||
StrUtil
.
isEmpty
(
dept
.
getDeptCode
()))
{
return
;
}
Date
startDate
=
DateUtil
.
date
();
Date
endDate
=
DateUtil
.
offsetDay
(
startDate
,
10
);
hpgpBusyIdlePredictionService
.
statisticResourceInfo
(
dept
,
startDate
,
endDate
);
});
}
private
void
saveDoctor
(
String
hosOrgCode
,
MapperFactory
factory
)
{
private
void
saveDoctor
(
String
hosOrgCode
,
MapperFactory
factory
)
{
List
<
DoctInfo
>
doctInfos
=
WanDaHttpUtil
.
getDoctInfo
(
new
DeptInfo
(
hosOrgCode
));
List
<
DoctInfo
>
doctInfos
=
WanDaHttpUtil
.
getDoctInfo
(
new
DeptInfo
(
hosOrgCode
));
...
...
smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/service/impl/HpDeptInfoServiceImpl.java
View file @
21fa2527
...
@@ -25,10 +25,7 @@ import lombok.extern.slf4j.Slf4j;
...
@@ -25,10 +25,7 @@ import lombok.extern.slf4j.Slf4j;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.*
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
/**
/**
...
@@ -119,12 +116,6 @@ public class HpDeptInfoServiceImpl extends ServiceImpl<HpDeptInfoMapper, HpDeptI
...
@@ -119,12 +116,6 @@ public class HpDeptInfoServiceImpl extends ServiceImpl<HpDeptInfoMapper, HpDeptI
return
remainDoctors
;
return
remainDoctors
;
}
}
/**
* 消化内科 42503527600 上海市瑞金医院卢湾分院 1013 3122 消化科 1 1013 3122
* 消化内科 Y0180100700 上海交通大学医学院附属第九人民医院黄浦分院 293 3 消化内科 2 293 3
* 消化内科 42502763900 黄浦区肿瘤防治院 10 0002 消化专科 3 10 0002
* @param args
*/
// public static void main(String[] args) {
// public static void main(String[] args) {
//
//
// DeptInfo info = new DeptInfo();
// DeptInfo info = new DeptInfo();
...
@@ -156,34 +147,34 @@ public class HpDeptInfoServiceImpl extends ServiceImpl<HpDeptInfoMapper, HpDeptI
...
@@ -156,34 +147,34 @@ public class HpDeptInfoServiceImpl extends ServiceImpl<HpDeptInfoMapper, HpDeptI
// public static void main(String[] args) {
// public static void main(String[] args) {
// NumSourceInfo numSourceInfo = new NumSourceInfo();
// NumSourceInfo numSourceInfo = new NumSourceInfo();
// numSourceInfo.setHosOrgCode("
Y01801007
00");
// numSourceInfo.setHosOrgCode("
E78803438
00");
// numSourceInfo.setOneDeptCode("
293
");
// numSourceInfo.setOneDeptCode("
50
");
// numSourceInfo.setDeptCode("
3
");
// numSourceInfo.setDeptCode("
2006
");
// numSourceInfo.setOrderType(WanDaConstant.ORDER_TYPE_OUTP);
// numSourceInfo.setOrderType(WanDaConstant.ORDER_TYPE_OUTP);
// numSourceInfo.setResourceCode("
10220
");
// numSourceInfo.setResourceCode("
0085
");
// numSourceInfo.setPatient_type(WanDaConstant.PATIENT_TYPE_NORMAL);
// numSourceInfo.setPatient_type(WanDaConstant.PATIENT_TYPE_NORMAL);
// numSourceInfo.setStartTime("2022-07-15");
// Date startDate = DateUtil.date();
// numSourceInfo.setEndTime("2022-07-22");
// Date endDate = DateUtil.offsetDay(startDate, 10);
// numSourceInfo.setOrderNumType("102");
// numSourceInfo.setStartTime(DateUtil.format(startDate, DatePattern.NORM_DATE_FORMAT));
// numSourceInfo.setEndTime(DateUtil.format(endDate, DatePattern.NORM_DATE_FORMAT));
//
//
// String orderNumType = numSourceInfo.getOrderNumType();
// if(WanDaConstant.ORDER_TYPE_OUTP.equals(numSourceInfo.getOrderType())){
// numSourceInfo.setOrderNumType(null);
// }
// List<NumSourceInfo> list = WanDaHttpUtil.getOrderNumInfo(numSourceInfo);
// List<NumSourceInfo> list = WanDaHttpUtil.getOrderNumInfo(numSourceInfo);
// if(WanDaConstant.ORDER_TYPE_OUTP.equals(numSourceInfo.getOrderType())){
//
// List<NumSourceInfo> result = list.stream().filter(i -> orderNumType.equals(i.getOrderNumType())).collect(Collectors.toList());
// log.error("list = {}", JSONUtil.toJsonStr(list));
// log.error("result = {}", JSONUtil.toJsonStr(result));
// }else{
// log.error("list = {}", JSONUtil.toJsonStr(list));
// }
// }
// }
/**
* 消化内科 42503527600 上海市瑞金医院卢湾分院 1013 3122 消化科 1 1013 3122
* 消化内科 Y0180100700 上海交通大学医学院附属第九人民医院黄浦分院 293 3 消化内科 2 293 3
* 消化内科 42502763900 黄浦区肿瘤防治院 10 0002 消化专科 3 10 0002
* E7880343800 50 2006
* @param args
*/
// public static void main(String[] args) {
// public static void main(String[] args) {
// String orgCode = "E7880343800";
// String orgCode = "E7880343800";
// String oneDeptCode = "
03
";
// String oneDeptCode = "
50
";
// String deptCode = "
4023
";
// String deptCode = "
2006
";
//
//
// HosInfo hosInfo = new HosInfo();
// HosInfo hosInfo = new HosInfo();
// hosInfo.setHosOrgCode(orgCode);
// hosInfo.setHosOrgCode(orgCode);
...
...
smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/service/impl/HphyPatientBaseServiceImpl.java
View file @
21fa2527
...
@@ -7,14 +7,13 @@ import cn.sh.stc.sict.cloud.common.core.constant.Constant;
...
@@ -7,14 +7,13 @@ import cn.sh.stc.sict.cloud.common.core.constant.Constant;
import
cn.sh.stc.sict.cloud.common.core.dto.WDUserCardInfo
;
import
cn.sh.stc.sict.cloud.common.core.dto.WDUserCardInfo
;
import
cn.sh.stc.sict.cloud.common.core.dto.WDUserInfo
;
import
cn.sh.stc.sict.cloud.common.core.dto.WDUserInfo
;
import
cn.sh.stc.sict.cloud.upms.dto.CurrentUser
;
import
cn.sh.stc.sict.cloud.upms.dto.CurrentUser
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
org.springframework.stereotype.Service
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
lombok.AllArgsConstructor
;
import
cn.sh.stc.sict.theme.hphy.dao.HphyPatientBaseMapper
;
import
cn.sh.stc.sict.theme.hphy.dao.HphyPatientBaseMapper
;
import
cn.sh.stc.sict.theme.hphy.model.HphyPatientBase
;
import
cn.sh.stc.sict.theme.hphy.model.HphyPatientBase
;
import
cn.sh.stc.sict.theme.hphy.service.HphyPatientBaseService
;
import
cn.sh.stc.sict.theme.hphy.service.HphyPatientBaseService
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
lombok.AllArgsConstructor
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
import
java.util.List
;
...
@@ -40,7 +39,7 @@ public class HphyPatientBaseServiceImpl extends ServiceImpl<HphyPatientBaseMappe
...
@@ -40,7 +39,7 @@ public class HphyPatientBaseServiceImpl extends ServiceImpl<HphyPatientBaseMappe
base
.
setUserId
(
current
.
getId
());
base
.
setUserId
(
current
.
getId
());
base
.
setOpenId
(
current
.
getOpenId
());
base
.
setOpenId
(
current
.
getOpenId
());
base
.
setPhone
(
userInfo
.
getMobile
());
base
.
setPhone
(
userInfo
.
getMobile
());
base
.
setName
(
userInfo
.
get
Usern
ame
());
base
.
setName
(
userInfo
.
get
N
ame
());
base
.
setCertId
(
userInfo
.
getPersoncard
());
base
.
setCertId
(
userInfo
.
getPersoncard
());
base
.
setAge
(
String
.
valueOf
(
IdcardUtil
.
getAgeByIdCard
(
userInfo
.
getPersoncard
())));
base
.
setAge
(
String
.
valueOf
(
IdcardUtil
.
getAgeByIdCard
(
userInfo
.
getPersoncard
())));
base
.
setGender
(
Constant
.
BYTE_YES
.
equals
(
userInfo
.
getGender
())
?
"男"
:
"女"
);
base
.
setGender
(
Constant
.
BYTE_YES
.
equals
(
userInfo
.
getGender
())
?
"男"
:
"女"
);
...
@@ -52,6 +51,7 @@ public class HphyPatientBaseServiceImpl extends ServiceImpl<HphyPatientBaseMappe
...
@@ -52,6 +51,7 @@ public class HphyPatientBaseServiceImpl extends ServiceImpl<HphyPatientBaseMappe
}
}
this
.
save
(
base
);
this
.
save
(
base
);
return
base
;
}
}
return
null
;
return
null
;
}
}
...
...
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