Commit f5cb6f8f authored by gaozhaochen's avatar gaozhaochen

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

No related merge requests found
......@@ -3,4 +3,15 @@ package cn.sh.stc.sict.cloud.common.core.constant;
public class UserConstant {
public final static String USER_SOURCE_MOBILE = "mobile";
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;
import cn.hutool.core.util.StrUtil;
import cn.sh.stc.sict.cloud.common.core.constant.UserConstant;
import lombok.Data;
/**
......@@ -43,6 +45,41 @@ public class XSZYUserInfo {
* 医院编码
*/
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 {
/**
* 获取用户信息请求地址
*/
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
String hospitalCode = infoArray[3];
XSZYUserInfo xszyUserInfo = WoaUtil.getXszyUserInfo(token);
String xszyUserInfoStr = JSONUtil.toJsonStr(xszyUserInfo);
log.error("woa.login.xszyUser = {}", xszyUserInfoStr);
if (ObjectUtil.isNull(xszyUserInfo) || StrUtil.isBlank(xszyUserInfo.getUserId())) {
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和手机号查询当前用户是否已注册过
LambdaQueryWrapper<SysUserBase> wrapper = new LambdaQueryWrapper<>();
......
......@@ -79,9 +79,10 @@ public class AppointmentController {
return new R().error("未找到患者信息!");
}
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) {
log.error("患者信息:{},预约信息:{}", JSONUtil.toJsonStr(patient), JSONUtil.toJsonStr(order));
return new R().error("请补充患者就诊卡信息!");
}
String deptName = "";
......@@ -139,8 +140,16 @@ public class AppointmentController {
order.setNumSourceFrom(WanDaConstant.NUM_SOURCE_FROM);
order.setPatient_type(WanDaConstant.PATIENT_TYPE_NORMAL);
if (StrUtil.isBlank(order.getMediCardId()) || StrUtil.isBlank(order.getMediCardType())) {
order.setMediCardId(patient.getMediCardId());
order.setMediCardType(patient.getMediCardType());
log.error("自动设置卡类型");
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));
AppResult result = WanDaHttpUtil.submitOrderByUserInfo(order);
......
......@@ -188,6 +188,15 @@ public class HphyPatientBaseController {
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);
}
......
......@@ -95,6 +95,10 @@ public class HphyPatientBaseServiceImpl extends ServiceImpl<HphyPatientBaseMappe
base.setGender(Constant.INT_YES.equals(IdcardUtil.getGenderByIdCard(certId)) ? "男" : "女");
base.setVerifyStatus(Constant.STRING_YES);
}
// 卡号卡类型
base.setMediCardType(userInfo.getMediCardType());
base.setMediCardId(userInfo.getMediCardType());
this.save(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