Commit 21fa2527 authored by fshenye's avatar fshenye

1. 定时任务,每日12点,24点统计排行科室号源信息,修改原来计算科室号源信息接口

2. bugfix:修复新用户需要完善信息问题
parent b75530da
...@@ -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;
......
...@@ -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.getMobile()); user.setUserName(wdUser.getUsername());
user.setOpenId(wdUser.getMobile()); user.setOpenId(wdUser.getMobile());
user.setName(wdUser.getUsername()); user.setName(wdUser.getName());
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();
......
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);
}
}
} }
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);
} }
...@@ -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);
});
}
});
}
}
} }
...@@ -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();
......
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);
}
}
}
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();
}
} }
...@@ -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);
......
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));
......
...@@ -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("Y0180100700"); // numSourceInfo.setHosOrgCode("E7880343800");
// 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);
......
...@@ -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.getUsername()); base.setName(userInfo.getName());
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;
} }
......
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