Commit f5cb6f8f authored by gaozhaochen's avatar gaozhaochen

update: 公众号跳转新增用户卡号卡类型

parent dc7296ff
...@@ -3,4 +3,15 @@ package cn.sh.stc.sict.cloud.common.core.constant; ...@@ -3,4 +3,15 @@ package cn.sh.stc.sict.cloud.common.core.constant;
public class UserConstant { public class UserConstant {
public final static String USER_SOURCE_MOBILE = "mobile"; public final static String USER_SOURCE_MOBILE = "mobile";
public final static String USER_SOURCE_SSB = "wd_ssb"; public final static String USER_SOURCE_SSB = "wd_ssb";
/**
* 0:社保卡
* 1:医保卡
* 2:统一自费就诊卡
* 9:其他卡
*/
public final static String SOCIAL_SECURITY_CARD = "0";
public final static String MEDICAL_INSURANCE_CARD = "1";
public final static String UNIFIED_MEDICAL_TREATMENT_EXPENSE_CARD = "2";
public final static String OTHER_CARD = "9";
} }
package cn.sh.stc.sict.cloud.common.core.dto; package cn.sh.stc.sict.cloud.common.core.dto;
import cn.hutool.core.util.StrUtil;
import cn.sh.stc.sict.cloud.common.core.constant.UserConstant;
import lombok.Data; import lombok.Data;
/** /**
...@@ -43,6 +45,41 @@ public class XSZYUserInfo { ...@@ -43,6 +45,41 @@ public class XSZYUserInfo {
* 医院编码 * 医院编码
*/ */
private String hospitalCode; private String hospitalCode;
/**
* 卡类型0:社保卡;1:医保卡;2:统一自费就诊卡;9:其他卡
*/
private String mediCardType;
/**
* 卡号
*/
private String mediCardId;
/**
* 将纳里用户卡类型映射为挂号时的卡类型
* 1:就诊卡
* 2:医保卡
* 3:病历号
* 4:健康卡
* 5:社保卡
* 6:住院卡
* 7:院内健健康卡
* 8:体检卡
*/
public static String fromNlType(String mediCardType) {
if (StrUtil.isBlank(mediCardType)) {
return null;
}
if (mediCardType.equals("5")) {
return UserConstant.SOCIAL_SECURITY_CARD;
} else if (mediCardType.equals("2")) {
return UserConstant.MEDICAL_INSURANCE_CARD;
} else if (mediCardType.equals("1")) {
return UserConstant.UNIFIED_MEDICAL_TREATMENT_EXPENSE_CARD;
} else {
return UserConstant.OTHER_CARD;
}
}
} }
...@@ -38,7 +38,7 @@ public class WoaUtil { ...@@ -38,7 +38,7 @@ public class WoaUtil {
/** /**
* 获取用户信息请求地址 * 获取用户信息请求地址
*/ */
private final static String WOA_XSZY_USER_INFO_API_URL = WOA_XSZY_URL + WOA_XSZY_GATEWAY_URL; private final static String WOA_XSZY_USER_INFO_API_URL = WOA_XSZY_PROXY_PASS_URL + WOA_XSZY_GATEWAY_URL;
/** /**
* 接口授权信息 * 接口授权信息
......
...@@ -121,11 +121,17 @@ public class SysUserBaseServiceImpl extends ServiceImpl<SysUserBaseMapper, SysUs ...@@ -121,11 +121,17 @@ public class SysUserBaseServiceImpl extends ServiceImpl<SysUserBaseMapper, SysUs
String hospitalCode = infoArray[3]; String hospitalCode = infoArray[3];
XSZYUserInfo xszyUserInfo = WoaUtil.getXszyUserInfo(token); XSZYUserInfo xszyUserInfo = WoaUtil.getXszyUserInfo(token);
String xszyUserInfoStr = JSONUtil.toJsonStr(xszyUserInfo);
log.error("woa.login.xszyUser = {}", xszyUserInfoStr);
if (ObjectUtil.isNull(xszyUserInfo) || StrUtil.isBlank(xszyUserInfo.getUserId())) { if (ObjectUtil.isNull(xszyUserInfo) || StrUtil.isBlank(xszyUserInfo.getUserId())) {
return null; return null;
} }
// 传参包含卡号卡类型单独配置
if (infoArray.length == 6) {
xszyUserInfo.setMediCardId(infoArray[4]);
xszyUserInfo.setMediCardType(XSZYUserInfo.fromNlType(infoArray[5]));
}
String xszyUserInfoStr = JSONUtil.toJsonStr(xszyUserInfo);
log.error("woa.login.xszyUser = {}", xszyUserInfoStr);
// 根据用户ID和手机号查询当前用户是否已注册过 // 根据用户ID和手机号查询当前用户是否已注册过
LambdaQueryWrapper<SysUserBase> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SysUserBase> wrapper = new LambdaQueryWrapper<>();
......
...@@ -79,9 +79,10 @@ public class AppointmentController { ...@@ -79,9 +79,10 @@ public class AppointmentController {
return new R().error("未找到患者信息!"); return new R().error("未找到患者信息!");
} }
boolean isNullCard = (StrUtil.isBlank(order.getMediCardId()) || StrUtil.isBlank(order.getMediCardType())) boolean isNullCard = (StrUtil.isBlank(order.getMediCardId()) || StrUtil.isBlank(order.getMediCardType()))
&& StrUtil.isBlank(patient.getMediCardId()) || StrUtil.isBlank(patient.getMediCardType()); && (StrUtil.isBlank(patient.getMediCardId()) || StrUtil.isBlank(patient.getMediCardType()));
// 有卡预约时检查就诊卡信息 // 有卡预约时检查就诊卡信息
if (WanDaConstant.ORDER_MODEL_1.equals(hos.getOrderMode()) && isNullCard) { if (WanDaConstant.ORDER_MODEL_1.equals(hos.getOrderMode()) && isNullCard) {
log.error("患者信息:{},预约信息:{}", JSONUtil.toJsonStr(patient), JSONUtil.toJsonStr(order));
return new R().error("请补充患者就诊卡信息!"); return new R().error("请补充患者就诊卡信息!");
} }
String deptName = ""; String deptName = "";
...@@ -139,8 +140,16 @@ public class AppointmentController { ...@@ -139,8 +140,16 @@ public class AppointmentController {
order.setNumSourceFrom(WanDaConstant.NUM_SOURCE_FROM); order.setNumSourceFrom(WanDaConstant.NUM_SOURCE_FROM);
order.setPatient_type(WanDaConstant.PATIENT_TYPE_NORMAL); order.setPatient_type(WanDaConstant.PATIENT_TYPE_NORMAL);
if (StrUtil.isBlank(order.getMediCardId()) || StrUtil.isBlank(order.getMediCardType())) { if (StrUtil.isBlank(order.getMediCardId()) || StrUtil.isBlank(order.getMediCardType())) {
order.setMediCardId(patient.getMediCardId()); log.error("自动设置卡类型");
order.setMediCardType(patient.getMediCardType()); order.setMediCardId("");
order.setMediCardType("");
if (StrUtil.isAllNotBlank(patient.getMediCardId(), patient.getMediCardType())
&& WanDaConstant.ORDER_MODEL_1.equals(hos.getOrderMode())) {
log.error("卡号= {},卡类型={}", patient.getMediCardId(), patient.getMediCardType());
order.setMediCardId(patient.getMediCardId());
order.setMediCardType(patient.getMediCardType());
}
} }
order.setUserBD(DateUtil.format(IdcardUtil.getBirthDate(patient.getCertId()), DatePattern.NORM_DATE_PATTERN)); order.setUserBD(DateUtil.format(IdcardUtil.getBirthDate(patient.getCertId()), DatePattern.NORM_DATE_PATTERN));
AppResult result = WanDaHttpUtil.submitOrderByUserInfo(order); AppResult result = WanDaHttpUtil.submitOrderByUserInfo(order);
......
...@@ -188,6 +188,15 @@ public class HphyPatientBaseController { ...@@ -188,6 +188,15 @@ public class HphyPatientBaseController {
SecurityUtils.updateCurrent(current); SecurityUtils.updateCurrent(current);
} }
// 更新卡号卡类型
if (LoginTypeEnum.WOA_NL.getType().equals(source)) {
XSZYUserInfo xszyUserInfo = JSONUtil.toBean(current.getXszyUserInfo(), XSZYUserInfo.class);
log.error("woaXszyUser = {}", xszyUserInfo);
base.setMediCardType(xszyUserInfo.getMediCardType());
base.setMediCardId(xszyUserInfo.getMediCardId());
hphyPatientBaseService.updateById(base);
}
return new R(base); return new R(base);
} }
......
...@@ -95,6 +95,10 @@ public class HphyPatientBaseServiceImpl extends ServiceImpl<HphyPatientBaseMappe ...@@ -95,6 +95,10 @@ public class HphyPatientBaseServiceImpl extends ServiceImpl<HphyPatientBaseMappe
base.setGender(Constant.INT_YES.equals(IdcardUtil.getGenderByIdCard(certId)) ? "男" : "女"); base.setGender(Constant.INT_YES.equals(IdcardUtil.getGenderByIdCard(certId)) ? "男" : "女");
base.setVerifyStatus(Constant.STRING_YES); base.setVerifyStatus(Constant.STRING_YES);
} }
// 卡号卡类型
base.setMediCardType(userInfo.getMediCardType());
base.setMediCardId(userInfo.getMediCardType());
this.save(base); this.save(base);
return base; return base;
} }
......
package cn.sh.stc.sict.theme.hphy.util;
import cn.hutool.core.collection.CollUtil;
import cn.sh.stc.sict.theme.hpgp.model.HpgpBusyIdlePrediction;
import lombok.experimental.UtilityClass;
import lombok.extern.slf4j.Slf4j;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
/**
* @author gao
* @date 2023/03/21 17:27
*/
@Slf4j
@UtilityClass
public class BusyIdlePredictionUtil {
/**
* 获取有号源的三个科室
* @param hpgpBusyIdlePredictionList
* @return
*/
public static List<HpgpBusyIdlePrediction> getHasRemainNum(List<HpgpBusyIdlePrediction> hpgpBusyIdlePredictionList) {
if (CollUtil.isEmpty(hpgpBusyIdlePredictionList)) {
return Collections.emptyList();
}
// 当前医院近七天有号的三个科室
List<String> deptCodeList = hpgpBusyIdlePredictionList.stream()
// 按科室分组,并统计每个科室可预约号源总量
.collect(Collectors.groupingBy(HpgpBusyIdlePrediction::getDeptCode,
Collectors.summingInt(item -> Optional.ofNullable(item.getRemainNum()).orElse(0))))
.entrySet().stream()
// 按可预约号源进行排序,取排名前三的科室
.sorted(Collections.reverseOrder(Map.Entry.comparingByValue()))
.map(Map.Entry::getKey)
.limit(3)
.collect(Collectors.toList());
return hpgpBusyIdlePredictionList.stream().filter(item -> deptCodeList.contains(item.getDeptCode())).collect(Collectors.toList());
}
}
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