Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
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
203dc631
Commit
203dc631
authored
Jul 15, 2022
by
fshenye
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化:
1. 科室号源信息查询添加缓存 2. 医生号源信息查询处理单独查询查不到问题 3. 处理可预约医生多余系统医生问题
parent
0c1c5938
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
184 additions
and
66 deletions
+184
-66
RedisCacheConstant.java
...c/sict/cloud/common/core/constant/RedisCacheConstant.java
+3
-0
HyThemeApplication.java
...rc/main/java/cn/sh/stc/sict/theme/HyThemeApplication.java
+2
-0
HpgpBusyIdlePredictionServiceImpl.java
.../hpgp/service/impl/HpgpBusyIdlePredictionServiceImpl.java
+71
-51
WDController.java
...cn/sh/stc/sict/theme/hphy/controller/mp/WDController.java
+15
-1
HpDeptInfoServiceImpl.java
...c/sict/theme/hphy/service/impl/HpDeptInfoServiceImpl.java
+93
-14
No files found.
cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/constant/RedisCacheConstant.java
View file @
203dc631
...
@@ -79,4 +79,7 @@ public class RedisCacheConstant {
...
@@ -79,4 +79,7 @@ public class RedisCacheConstant {
* 验证码前缀
* 验证码前缀
*/
*/
public
static
final
String
DEFAULT_CODE_KEY
=
"SICT_DEFAULT_CODE_KEY_"
;
public
static
final
String
DEFAULT_CODE_KEY
=
"SICT_DEFAULT_CODE_KEY_"
;
public
static
final
String
DEPT_NUM_SOURCE_RESULT
=
"dept_num_source_result"
;
}
}
smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/HyThemeApplication.java
View file @
203dc631
...
@@ -4,6 +4,7 @@ import cn.sh.stc.sict.cloud.common.security.annotation.EnableSictFeignClients;
...
@@ -4,6 +4,7 @@ import cn.sh.stc.sict.cloud.common.security.annotation.EnableSictFeignClients;
import
cn.sh.stc.sict.cloud.common.security.annotation.EnableSictResourceServer
;
import
cn.sh.stc.sict.cloud.common.security.annotation.EnableSictResourceServer
;
import
cn.sh.stc.sict.cloud.common.swagger.annotation.EnableSictSwagger2
;
import
cn.sh.stc.sict.cloud.common.swagger.annotation.EnableSictSwagger2
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.cache.annotation.EnableCaching
;
import
org.springframework.cloud.client.SpringCloudApplication
;
import
org.springframework.cloud.client.SpringCloudApplication
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
org.springframework.transaction.annotation.EnableTransactionManagement
;
import
org.springframework.transaction.annotation.EnableTransactionManagement
;
...
@@ -11,6 +12,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
...
@@ -11,6 +12,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
/**
* @author F_xh
* @author F_xh
*/
*/
@EnableCaching
@EnableScheduling
@EnableScheduling
@EnableSictSwagger2
@EnableSictSwagger2
@SpringCloudApplication
@SpringCloudApplication
...
...
smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hpgp/service/impl/HpgpBusyIdlePredictionServiceImpl.java
View file @
203dc631
...
@@ -5,9 +5,11 @@ import cn.hutool.core.collection.CollectionUtil;
...
@@ -5,9 +5,11 @@ 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.db.DaoTemplate
;
import
cn.hutool.json.JSONArray
;
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.cloud.common.core.util.R
;
import
cn.sh.stc.sict.theme.hpgp.dao.HpgpBusyIdlePredictionMapper
;
import
cn.sh.stc.sict.theme.hpgp.dao.HpgpBusyIdlePredictionMapper
;
...
@@ -22,9 +24,12 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
...
@@ -22,9 +24,12 @@ 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.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
;
/**
/**
...
@@ -38,6 +43,7 @@ import java.util.stream.Collectors;
...
@@ -38,6 +43,7 @@ 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
<
DeptPredictionVO
>
busyIdlePrediction
(
String
deptName
)
{
...
@@ -53,60 +59,74 @@ public class HpgpBusyIdlePredictionServiceImpl extends ServiceImpl<HpgpBusyIdleP
...
@@ -53,60 +59,74 @@ public class HpgpBusyIdlePredictionServiceImpl extends ServiceImpl<HpgpBusyIdleP
List
<
DeptPredictionVO
>
result
=
new
ArrayList
<>();
List
<
DeptPredictionVO
>
result
=
new
ArrayList
<>();
rankList
.
forEach
(
rank
->
{
rankList
.
forEach
(
rank
->
{
List
<
DeptPredictionVO
>
rankResult
=
new
ArrayList
<>();
List
<
DeptPredictionVO
>
rankResult
=
new
ArrayList
<>();
DeptInfo
deptInfo
=
new
DeptInfo
();
String
key
=
RedisCacheConstant
.
DEPT_NUM_SOURCE_RESULT
+
":"
+
rank
.
getHospitalCode
();
deptInfo
.
setHosOrgCode
(
rank
.
getHospitalCode
());
if
(
StrUtil
.
isNotBlank
(
rank
.
getOneDeptCode
()))
{
deptInfo
.
setOneDeptCode
(
rank
.
getOneDeptCode
());
key
=
key
+
":"
+
rank
.
getOneDeptCode
();
deptInfo
.
setDeptCode
(
rank
.
getSubDeptCode
());
}
List
<
OutPatInfo
>
outPatInfo
=
WanDaHttpUtil
.
getResourceOutPatInfo
(
deptInfo
);
if
(
StrUtil
.
isNotBlank
(
rank
.
getSubDeptCode
()))
{
if
(
CollUtil
.
isNotEmpty
(
outPatInfo
))
{
key
=
key
+
":"
+
rank
.
getSubDeptCode
();
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
(
stringRedisTemplate
.
hasKey
(
key
))
{
if
(
CollUtil
.
isEmpty
(
rankResult
))
{
String
str
=
stringRedisTemplate
.
opsForValue
().
get
(
key
);
for
(
Date
i
=
DateUtil
.
offsetDay
(
startTime
,
1
);
DateUtil
.
compare
(
i
,
endTime
)
<
1
;
i
=
DateUtil
.
offsetDay
(
i
,
1
))
{
JSONArray
array
=
JSONUtil
.
parseArray
(
str
);
DeptPredictionVO
vo
=
new
DeptPredictionVO
();
result
.
addAll
(
JSONUtil
.
toList
(
array
,
DeptPredictionVO
.
class
));
vo
.
setDeptCode
(
rank
.
getDeptCode
());
}
else
{
vo
.
setDeptName
(
rank
.
getDeptName
());
DeptInfo
deptInfo
=
new
DeptInfo
();
vo
.
setHospitalName
(
rank
.
getHospitalName
());
deptInfo
.
setHosOrgCode
(
rank
.
getHospitalCode
());
vo
.
setHospitalCode
(
rank
.
getHospitalCode
());
deptInfo
.
setOneDeptCode
(
rank
.
getOneDeptCode
());
vo
.
setPredictionDate
(
i
);
deptInfo
.
setDeptCode
(
rank
.
getSubDeptCode
());
vo
.
setScoreByNum
();
List
<
OutPatInfo
>
outPatInfo
=
WanDaHttpUtil
.
getResourceOutPatInfo
(
deptInfo
);
result
.
add
(
vo
);
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
=
DateUtil
.
offsetDay
(
startTime
,
1
);
DateUtil
.
compare
(
i
,
endTime
)
<
1
;
i
=
DateUtil
.
offsetDay
(
i
,
1
))
{
DeptPredictionVO
vo
=
new
DeptPredictionVO
();
vo
.
setDeptCode
(
rank
.
getDeptCode
());
vo
.
setDeptName
(
rank
.
getDeptName
());
vo
.
setHospitalName
(
rank
.
getHospitalName
());
vo
.
setHospitalCode
(
rank
.
getHospitalCode
());
vo
.
setPredictionDate
(
i
);
vo
.
setScoreByNum
();
rankResult
.
add
(
vo
);
}
}
}
stringRedisTemplate
.
opsForValue
().
set
(
key
,
JSONUtil
.
toJsonStr
(
rankResult
),
4
,
TimeUnit
.
HOURS
);
result
.
addAll
(
rankResult
);
}
}
result
.
addAll
(
rankResult
);
});
});
return
result
;
return
result
;
}
}
...
...
smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/controller/mp/WDController.java
View file @
203dc631
...
@@ -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.collection.CollUtil
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.lang.Validator
;
import
cn.hutool.core.lang.Validator
;
import
cn.hutool.core.util.RandomUtil
;
import
cn.hutool.core.util.RandomUtil
;
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.util.R
;
import
cn.sh.stc.sict.cloud.common.core.util.R
;
import
cn.sh.stc.sict.cloud.common.core.util.ValidateCodeUtil
;
import
cn.sh.stc.sict.cloud.common.core.util.ValidateCodeUtil
;
...
@@ -21,6 +22,7 @@ import org.springframework.data.redis.core.StringRedisTemplate;
...
@@ -21,6 +22,7 @@ import org.springframework.data.redis.core.StringRedisTemplate;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
/**
* @author F_xh
* @author F_xh
...
@@ -72,7 +74,18 @@ public class WDController {
...
@@ -72,7 +74,18 @@ public class WDController {
@GetMapping
(
"/num/info"
)
@GetMapping
(
"/num/info"
)
public
R
getOrderNumberInfo
(
NumSourceInfo
numSourceInfo
)
{
public
R
getOrderNumberInfo
(
NumSourceInfo
numSourceInfo
)
{
// 医生查询所有号源能查到,查询指定类型号源差不多,20220715处理:查询所有,过滤
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
());
return
new
R
(
result
);
}
else
{
return
new
R
(
list
);
}
// if (CollUtil.isNotEmpty(list)) {
// if (CollUtil.isNotEmpty(list)) {
// return R.builder().code(Constant.BYTE_YES).data(list).bizCode(Constant.INT_NO).build();
// return R.builder().code(Constant.BYTE_YES).data(list).bizCode(Constant.INT_NO).build();
...
@@ -90,7 +103,7 @@ public class WDController {
...
@@ -90,7 +103,7 @@ public class WDController {
//
//
// return new R(list);
// return new R(list);
// }
// }
return
new
R
().
success
(
list
);
//
return new R().success(list);
}
}
@ApiOperation
(
"获取测压亭列表"
)
@ApiOperation
(
"获取测压亭列表"
)
...
@@ -98,4 +111,5 @@ public class WDController {
...
@@ -98,4 +111,5 @@ public class WDController {
public
R
getPressureStationList
(){
public
R
getPressureStationList
(){
return
new
R
();
return
new
R
();
}
}
}
}
smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/service/impl/HpDeptInfoServiceImpl.java
View file @
203dc631
package
cn
.
sh
.
stc
.
sict
.
theme
.
hphy
.
service
.
impl
;
package
cn
.
sh
.
stc
.
sict
.
theme
.
hphy
.
service
.
impl
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.date.DatePattern
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.json.JSONUtil
;
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.dao.HpDeptInfoMapper
;
import
cn.sh.stc.sict.theme.hphy.dao.HpDeptInfoMapper
;
import
cn.sh.stc.sict.theme.hphy.dao.HpDocInfoMapper
;
import
cn.sh.stc.sict.theme.hphy.dao.HpDocInfoMapper
;
...
@@ -8,17 +12,21 @@ import cn.sh.stc.sict.theme.hphy.model.HpDeptInfo;
...
@@ -8,17 +12,21 @@ 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
;
import
cn.sh.stc.sict.theme.hphy.model.HpHosInfo
;
import
cn.sh.stc.sict.theme.hphy.model.HpHosInfo
;
import
cn.sh.stc.sict.theme.hphy.service.HpDeptInfoService
;
import
cn.sh.stc.sict.theme.hphy.service.HpDeptInfoService
;
import
cn.sh.stc.sict.theme.hphy.service.HpDocInfoService
;
import
cn.sh.stc.sict.theme.hphy.service.HpHosInfoService
;
import
cn.sh.stc.sict.theme.hphy.vo.DeptDoctorsVO
;
import
cn.sh.stc.sict.theme.hphy.vo.DeptDoctorsVO
;
import
cn.sh.stc.sict.theme.hphy.wd.DeptInfo
;
import
cn.sh.stc.sict.theme.hphy.wd.*
;
import
cn.sh.stc.sict.theme.hphy.wd.OutPatInfo
;
import
cn.sh.stc.sict.theme.hphy.wd.WanDaHttpUtil
;
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.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
/**
/**
* (HpDeptInfo)表服务实现类
* (HpDeptInfo)表服务实现类
...
@@ -30,23 +38,23 @@ import java.util.List;
...
@@ -30,23 +38,23 @@ import java.util.List;
@AllArgsConstructor
@AllArgsConstructor
@Service
(
"hpDeptInfoService"
)
@Service
(
"hpDeptInfoService"
)
public
class
HpDeptInfoServiceImpl
extends
ServiceImpl
<
HpDeptInfoMapper
,
HpDeptInfo
>
implements
HpDeptInfoService
{
public
class
HpDeptInfoServiceImpl
extends
ServiceImpl
<
HpDeptInfoMapper
,
HpDeptInfo
>
implements
HpDeptInfoService
{
private
final
HpDocInfo
Mapper
hpDocInfoMapper
;
private
final
HpDocInfo
Service
hpDocInfoService
;
private
final
HpHosInfo
Mapper
hpHosInfoMapper
;
private
final
HpHosInfo
Service
hpHosInfoService
;
@Override
@Override
public
DeptDoctorsVO
getDeptDoctors
(
String
hospitalCode
,
String
deptCode
)
{
public
DeptDoctorsVO
getDeptDoctors
(
String
hospitalCode
,
String
deptCode
)
{
HpHosInfo
hosInfo
=
hpHosInfo
Mapper
.
selec
tById
(
hospitalCode
);
HpHosInfo
hosInfo
=
hpHosInfo
Service
.
ge
tById
(
hospitalCode
);
// 查询科室信息
// 查询科室信息
// 查询医生信息
// 查询医生信息
HpDeptInfo
deptInfo
=
this
.
getOne
(
HpDeptInfo
deptInfo
=
this
.
getOne
(
new
LambdaQueryWrapper
<
HpDeptInfo
>()
new
LambdaQueryWrapper
<
HpDeptInfo
>()
.
eq
(
HpDeptInfo:
:
getHosOrgCode
,
hospitalCode
)
.
eq
(
HpDeptInfo:
:
getHosOrgCode
,
hospitalCode
)
.
and
(
i
->
i
.
eq
(
HpDeptInfo:
:
getOneDeptCode
,
deptCode
)
.
and
(
i
->
i
.
eq
(
HpDeptInfo:
:
getOneDeptCode
,
deptCode
)
.
or
().
eq
(
HpDeptInfo:
:
getDeptCode
,
deptCode
))
.
or
().
eq
(
HpDeptInfo:
:
getDeptCode
,
deptCode
))
.
orderByDesc
(
HpDeptInfo:
:
getDeptLevel
)
.
orderByDesc
(
HpDeptInfo:
:
getDeptLevel
)
.
last
(
"limit 1"
)
.
last
(
"limit 1"
)
);
);
if
(
deptInfo
==
null
){
if
(
deptInfo
==
null
)
{
log
.
error
(
"根据医院编码:{} 和科室编码:{} 未查出科室信息"
,
hospitalCode
,
deptCode
);
log
.
error
(
"根据医院编码:{} 和科室编码:{} 未查出科室信息"
,
hospitalCode
,
deptCode
);
return
null
;
return
null
;
}
}
...
@@ -54,22 +62,93 @@ public class HpDeptInfoServiceImpl extends ServiceImpl<HpDeptInfoMapper, HpDeptI
...
@@ -54,22 +62,93 @@ public class HpDeptInfoServiceImpl extends ServiceImpl<HpDeptInfoMapper, HpDeptI
LambdaQueryWrapper
<
HpDocInfo
>
docWrapper
=
new
LambdaQueryWrapper
<>();
LambdaQueryWrapper
<
HpDocInfo
>
docWrapper
=
new
LambdaQueryWrapper
<>();
docWrapper
.
eq
(
HpDocInfo:
:
getHosOrgCode
,
hospitalCode
);
docWrapper
.
eq
(
HpDocInfo:
:
getHosOrgCode
,
hospitalCode
);
docWrapper
.
eq
(
HpDocInfo:
:
getOneDeptCode
,
deptInfo
.
getOneDeptCode
());
docWrapper
.
eq
(
HpDocInfo:
:
getOneDeptCode
,
deptInfo
.
getOneDeptCode
());
if
(
DataConstant
.
TWO_DEPT
.
equals
(
deptInfo
.
getDeptLevel
())){
if
(
DataConstant
.
TWO_DEPT
.
equals
(
deptInfo
.
getDeptLevel
()))
{
docWrapper
.
eq
(
HpDocInfo:
:
getDeptCode
,
deptInfo
.
getDeptCode
());
docWrapper
.
eq
(
HpDocInfo:
:
getDeptCode
,
deptInfo
.
getDeptCode
());
}
}
docWrapper
.
orderByAsc
(
HpDocInfo:
:
getIndexNo
);
docWrapper
.
orderByAsc
(
HpDocInfo:
:
getIndexNo
);
List
<
HpDocInfo
>
doctors
=
hpDocInfoMapper
.
selectList
(
docWrapper
);
List
<
HpDocInfo
>
doctors
=
hpDocInfoService
.
list
(
docWrapper
);
// 查询可预约医生信息
// DeptInfo info = new DeptInfo();
// List<DoctInfo> resourceDoctInfo = WanDaHttpUtil.getResourceDoctInfo(info);
DeptInfo
info
=
new
DeptInfo
();
DeptInfo
info
=
new
DeptInfo
();
info
.
setHosOrgCode
(
deptInfo
.
getHosOrgCode
());
info
.
setHosOrgCode
(
deptInfo
.
getHosOrgCode
());
info
.
setOneDeptCode
(
deptInfo
.
getOneDeptCode
());
info
.
setOneDeptCode
(
deptInfo
.
getOneDeptCode
());
info
.
setDeptCode
(
deptInfo
.
getDeptCode
());
info
.
setDeptCode
(
deptInfo
.
getDeptCode
());
List
<
OutPatInfo
>
resourceOutPatInfo
=
WanDaHttpUtil
.
getResourceOutPatInfo
(
info
);
List
<
OutPatInfo
>
resourceOutPatInfo
=
WanDaHttpUtil
.
getResourceOutPatInfo
(
info
);
List
<
DoctInfo
>
resourceDoctInfo
=
WanDaHttpUtil
.
getResourceDoctInfo
(
info
);
List
<
HpDocInfo
>
remainDoctors
=
this
.
getRemainDoctList
(
doctors
,
resourceDoctInfo
);
return
new
DeptDoctorsVO
(
hosInfo
,
deptInfo
,
resourceOutPatInfo
,
remainDoctors
);
}
private
List
<
HpDocInfo
>
getRemainDoctList
(
List
<
HpDocInfo
>
doctors
,
List
<
DoctInfo
>
resourceDoctInfo
)
{
Map
<
String
,
HpDocInfo
>
doctorMap
=
doctors
.
stream
().
collect
(
Collectors
.
groupingBy
(
HpDocInfo:
:
getResourceCode
,
Collectors
.
collectingAndThen
(
Collectors
.
toList
(),
x
->
x
.
get
(
0
))));
List
<
HpDocInfo
>
remainDoctors
=
new
ArrayList
<>();
resourceDoctInfo
.
forEach
(
res
->
{
if
(
doctorMap
.
containsKey
(
res
.
getResourceCode
())){
remainDoctors
.
add
(
doctorMap
.
get
(
res
.
getResourceCode
()));
}
else
{
HpDocInfo
doctor
=
BeanUtil
.
toBean
(
res
,
HpDocInfo
.
class
);
hpDocInfoService
.
save
(
doctor
);
remainDoctors
.
add
(
doctor
);
}
});
return
new
DeptDoctorsVO
(
hosInfo
,
deptInfo
,
resourceOutPatInfo
,
doctors
)
;
return
remainDoctors
;
}
}
// public static void main(String[] args) {
//
// DeptInfo info = new DeptInfo();
// info.setHosOrgCode("42503527600");
// info.setOneDeptCode("1013");
// info.setDeptCode("3122");
// List<OutPatInfo> resourceOutPatInfo = WanDaHttpUtil.getResourceOutPatInfo(info);
// List<DoctInfo> resourceDoctInfo = WanDaHttpUtil.getResourceDoctInfo(info);
// log.error("OutPatInfo = {}", JSONUtil.toJsonStr(resourceOutPatInfo));
// log.error("=========================");
// log.error("DoctInfo = {}", JSONUtil.toJsonStr(resourceDoctInfo));
//
// DoctInfo doctInfo = resourceDoctInfo.get(0);
// NumSourceInfo numSourceInfo = new NumSourceInfo();
// numSourceInfo.setHosOrgCode(doctInfo.getHosOrgCode());
// numSourceInfo.setOneDeptCode(doctInfo.getOneDeptCode());
// numSourceInfo.setDeptCode(doctInfo.getDeptCode());
// numSourceInfo.setOrderType(WanDaConstant.ORDER_TYPE_OUTP);
// numSourceInfo.setResourceCode(doctInfo.getResourceCode());
// numSourceInfo.setPatient_type(WanDaConstant.PATIENT_TYPE_NORMAL);
// numSourceInfo.setStartTime("2022-07-15");
// numSourceInfo.setEndTime("2022-07-22");
// numSourceInfo.setOrderNumType("102");
//
// List<NumSourceInfo> orderNumInfo = WanDaHttpUtil.getOrderNumInfo(numSourceInfo);
// log.error("=========================");
// log.error("numInfo = {}", JSONUtil.toJsonStr(orderNumInfo));
// }
// public static void main(String[] args) {
// NumSourceInfo numSourceInfo = new NumSourceInfo();
// numSourceInfo.setHosOrgCode("42503527600");
// numSourceInfo.setOneDeptCode("1013");
// numSourceInfo.setDeptCode("3122");
// numSourceInfo.setOrderType(WanDaConstant.ORDER_TYPE_OUTP);
// numSourceInfo.setResourceCode("10220");
// numSourceInfo.setPatient_type(WanDaConstant.PATIENT_TYPE_NORMAL);
// numSourceInfo.setStartTime("2022-07-15");
// numSourceInfo.setEndTime("2022-07-22");
// numSourceInfo.setOrderNumType("102");
//
// String orderNumType = numSourceInfo.getOrderNumType();
// if(WanDaConstant.ORDER_TYPE_OUTP.equals(numSourceInfo.getOrderType())){
// numSourceInfo.setOrderNumType(null);
// }
// 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("result = {}", JSONUtil.toJsonStr(result));
// }else{
// log.error("list = {}", JSONUtil.toJsonStr(list));
// }
// }
}
}
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