Commit 203dc631 authored by fshenye's avatar fshenye

优化:

1. 科室号源信息查询添加缓存
2. 医生号源信息查询处理单独查询查不到问题
3. 处理可预约医生多余系统医生问题
parent 0c1c5938
...@@ -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";
} }
...@@ -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
......
...@@ -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;
} }
......
...@@ -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();
} }
} }
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 HpDocInfoMapper hpDocInfoMapper; private final HpDocInfoService hpDocInfoService;
private final HpHosInfoMapper hpHosInfoMapper; private final HpHosInfoService hpHosInfoService;
@Override @Override
public DeptDoctorsVO getDeptDoctors(String hospitalCode, String deptCode) { public DeptDoctorsVO getDeptDoctors(String hospitalCode, String deptCode) {
HpHosInfo hosInfo = hpHosInfoMapper.selectById(hospitalCode); HpHosInfo hosInfo = hpHosInfoService.getById(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));
// }
// }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment