|
@@ -2,8 +2,9 @@ package com.ywt.outpatient.taihe.rpc.provider;
|
|
|
|
|
|
import com.google.protobuf.TextFormat;
|
|
|
import com.ywt.biz.common.constant.GlobalConstants;
|
|
|
+import com.ywt.biz.common.constant.YwtCommonRespCode;
|
|
|
import com.ywt.biz.common.enums.PaymentChannelEnum;
|
|
|
-import com.ywt.biz.common.util.serializers.JsonSerializer;
|
|
|
+import com.ywt.biz.common.exception.YwtCommonException;
|
|
|
import com.ywt.gapi.Result;
|
|
|
import com.ywt.gapi.ResultCode;
|
|
|
import com.ywt.gapi.base.idCard.IdCardService;
|
|
@@ -19,7 +20,6 @@ import com.ywt.gapi.taihe.register.RegisterResponse;
|
|
|
import com.ywt.gapi.third.taihe.*;
|
|
|
import com.ywt.gapi.user.*;
|
|
|
import com.ywt.outpatient.taihe.rpc.domain.entity.center.RegisteredOrder;
|
|
|
-import com.ywt.outpatient.taihe.rpc.core.AppMessageException;
|
|
|
import com.ywt.outpatient.taihe.rpc.core.PagedList;
|
|
|
import com.ywt.outpatient.taihe.rpc.core.ServiceResult;
|
|
|
import com.ywt.outpatient.taihe.rpc.core.SqlHelper;
|
|
@@ -155,7 +155,7 @@ public class TaiheRegisterProvider extends DubboTaiheRegisterServiceTriple.Taihe
|
|
|
try {
|
|
|
VerifyCreateRegisteredResult verifyCreateRegisteredResult = verifyCreateRegisteredRequest(request);
|
|
|
if (!verifyCreateRegisteredResult.isSuccess()) {
|
|
|
- throw new AppMessageException(String.format("校验未通过:%s", verifyCreateRegisteredResult.getMsg()));
|
|
|
+ throw new YwtCommonException(YwtCommonRespCode.P_ERR, String.format("校验未通过:%s", verifyCreateRegisteredResult.getMsg()));
|
|
|
}
|
|
|
MedicalCard medicalCard = verifyCreateRegisteredResult.getMedicalCard();
|
|
|
String doctorTitle = verifyCreateRegisteredResult.getDoctorTitle();
|
|
@@ -255,7 +255,7 @@ public class TaiheRegisterProvider extends DubboTaiheRegisterServiceTriple.Taihe
|
|
|
LockOrderResponse lockOrderResponse = taiheServiceBlockingStub.lockOrder(lockOrderRequest);
|
|
|
if (lockOrderResponse.getCode() != ResultCode.SUCCEED_VALUE) {
|
|
|
String errMsg = StringHelper.isNullOrEmpty(lockOrderResponse.getMsg()) ? "号源不足,请选择其他医生!" : lockOrderResponse.getMsg();
|
|
|
- throw new AppMessageException(errMsg);
|
|
|
+ throw new YwtCommonException(YwtCommonRespCode.P_ERR, errMsg);
|
|
|
}
|
|
|
// 存入 orderCode
|
|
|
registeredOrder.setHisOrderCode(Checker.getStringValue(lockOrderResponse.getOrderCode()));
|
|
@@ -265,7 +265,7 @@ public class TaiheRegisterProvider extends DubboTaiheRegisterServiceTriple.Taihe
|
|
|
//创建订单中心订单
|
|
|
ServiceResult serviceResult = createOrder(registeredOrder);
|
|
|
if (!serviceResult.isSuccessful()) {
|
|
|
- throw new AppMessageException(String.format("创建订单出错:%s", serviceResult.getMsg()));
|
|
|
+ throw new YwtCommonException(YwtCommonRespCode.P_ERR, String.format("创建订单出错:%s", serviceResult.getMsg()));
|
|
|
}
|
|
|
|
|
|
// 非名医挂号,如果挂号费是 0 元的订单或公医订单,不用支付,直接去 HIS 挂号然后修改订单状态
|
|
@@ -289,8 +289,8 @@ public class TaiheRegisterProvider extends DubboTaiheRegisterServiceTriple.Taihe
|
|
|
TextFormat.printToUnicodeString(builder.build()));
|
|
|
return builder.build();
|
|
|
|
|
|
- } catch (AppMessageException ame) {
|
|
|
- builder.setCode(ResultCode.APP_ERROR_VALUE).setMsg(ame.getMessage());
|
|
|
+ } catch (YwtCommonException ame) {
|
|
|
+ builder.setCode(ResultCode.PARAMETER_ERROR_VALUE).setMsg(ame.getMessage());
|
|
|
return builder.build();
|
|
|
} catch (Exception e) {
|
|
|
logger.error("createRegistered({}): {}", TextFormat.printToUnicodeString(request), e.getMessage(), e);
|
|
@@ -302,10 +302,10 @@ public class TaiheRegisterProvider extends DubboTaiheRegisterServiceTriple.Taihe
|
|
|
/**
|
|
|
* 免费挂号,0 元挂号费的订单(如公医)调用 HIS 挂号并修改订单状态
|
|
|
*/
|
|
|
- private void payFreeReg(int regId, int paymentChannel) throws AppMessageException {
|
|
|
+ private void payFreeReg(int regId, int paymentChannel) throws YwtCommonException {
|
|
|
RegisteredOrder registeredOrder = registeredOrderRepository.getById(regId);
|
|
|
if (registeredOrder == null) {
|
|
|
- throw new AppMessageException("0 元挂号:挂号订单不存在");
|
|
|
+ throw new YwtCommonException(YwtCommonRespCode.P_ERR, "0 元挂号:挂号订单不存在");
|
|
|
}
|
|
|
int orderId = Checker.getIntegerValue(registeredOrder.getOrderId());
|
|
|
String payMode = Constants.PAY_MODE_WECHAT;
|
|
@@ -332,7 +332,7 @@ public class TaiheRegisterProvider extends DubboTaiheRegisterServiceTriple.Taihe
|
|
|
// 挂号失败,修改挂号订单状态为初始状态
|
|
|
registeredOrder.setRegisteredStatus(0);
|
|
|
registeredOrderRepository.save(registeredOrder);
|
|
|
- throw new AppMessageException(String.format("call HIS pay:%s", payRes.getMsg()));
|
|
|
+ throw new YwtCommonException(YwtCommonRespCode.P_ERR, String.format("call HIS pay:%s", payRes.getMsg()));
|
|
|
} else {
|
|
|
//挂号成功,更新挂号订单信息
|
|
|
registeredOrderRepository.updateRegisterInfoById(payRes.getSeqCode(), String.valueOf(payRes.getRegFee())
|
|
@@ -364,7 +364,7 @@ public class TaiheRegisterProvider extends DubboTaiheRegisterServiceTriple.Taihe
|
|
|
*
|
|
|
* @param request {@link CreateRegisteredRequest}
|
|
|
*/
|
|
|
- private VerifyCreateRegisteredResult verifyCreateRegisteredRequest(CreateRegisteredRequest request) throws AppMessageException {
|
|
|
+ private VerifyCreateRegisteredResult verifyCreateRegisteredRequest(CreateRegisteredRequest request) throws YwtCommonException {
|
|
|
VerifyCreateRegisteredResult result = new VerifyCreateRegisteredResult();
|
|
|
long minTimestamp = DateUtil.convertToTimestamp(LocalDate.now());
|
|
|
long maxTimestamp = DateUtil.convertToTimestamp(LocalDate.now().plusDays(8));
|
|
@@ -2125,14 +2125,14 @@ public class TaiheRegisterProvider extends DubboTaiheRegisterServiceTriple.Taihe
|
|
|
List<DoctorHisCode> doctorHisCodeList = doctorHisCodeRepository.getListByDoctorIdAndHospitalId(doctorId,
|
|
|
hospitalId);
|
|
|
if (Checker.isNone(doctorHisCodeList)) {
|
|
|
- throw new AppMessageException("医生 id 有误");
|
|
|
+ throw new YwtCommonException(YwtCommonRespCode.P_ERR, "医生 id 有误");
|
|
|
}
|
|
|
DoctorHisCode netRelated = doctorHisCodeList.stream()
|
|
|
.filter(d -> checkIsNetDept(d.getDeptCode(), hospitalId))
|
|
|
.findFirst()
|
|
|
.orElse(null);
|
|
|
if (netRelated == null) {
|
|
|
- throw new AppMessageException("找不到医生对应的科室排班信息");
|
|
|
+ throw new YwtCommonException(YwtCommonRespCode.P_ERR, "找不到医生对应的科室排班信息");
|
|
|
}
|
|
|
String deptCode = netRelated.getDeptCode();
|
|
|
String doctorName = netRelated.getDoctorName();
|
|
@@ -2140,7 +2140,7 @@ public class TaiheRegisterProvider extends DubboTaiheRegisterServiceTriple.Taihe
|
|
|
// 获取 deptId & deptName
|
|
|
HospitalDept hospitalDept = getDepartmentByDeptCodeAndHospitalId(deptCode, hospitalId);
|
|
|
if (hospitalDept == null) {
|
|
|
- throw new AppMessageException("找不到科室信息");
|
|
|
+ throw new YwtCommonException(YwtCommonRespCode.P_ERR, "找不到科室信息");
|
|
|
}
|
|
|
int deptId = hospitalDept.getDeptId();
|
|
|
String deptName = hospitalDept.getDeptName();
|
|
@@ -2150,7 +2150,7 @@ public class TaiheRegisterProvider extends DubboTaiheRegisterServiceTriple.Taihe
|
|
|
.build();
|
|
|
DoctorInfoResponse response = doctorServiceBlockingStub.getDoctorInfo(doctorRequest);
|
|
|
if (response.getResult().getCode() != ResultCode.SUCCEED) {
|
|
|
- throw new AppMessageException(String.format("获取不到医生信息: %s", response.getResult().getInfo()));
|
|
|
+ throw new YwtCommonException(YwtCommonRespCode.P_ERR, String.format("获取不到医生信息: %s", response.getResult().getInfo()));
|
|
|
}
|
|
|
// v3.2.0 线下就诊费用跟问诊费分开,线下就诊费用读取 offline_fee 字段
|
|
|
int consultFee = Checker.getIntegerValue(response.getInfo().getOfflineFee());
|
|
@@ -2164,8 +2164,8 @@ public class TaiheRegisterProvider extends DubboTaiheRegisterServiceTriple.Taihe
|
|
|
.setConsultFee(consultFee);
|
|
|
|
|
|
return builder.build();
|
|
|
- } catch (AppMessageException e) {
|
|
|
- builder.setCode(ResultCode.APP_ERROR_VALUE).setInfo(e.getMessage());
|
|
|
+ } catch (YwtCommonException e) {
|
|
|
+ builder.setCode(ResultCode.PARAMETER_ERROR_VALUE).setInfo(e.getMessage());
|
|
|
return builder.build();
|
|
|
} catch (Exception e) {
|
|
|
logger.error("TaiheRegisterService#getOfflineConsultInfoByDoctorId(request={}):\n {}", request, e.getMessage(), e);
|
|
@@ -2277,7 +2277,7 @@ public class TaiheRegisterProvider extends DubboTaiheRegisterServiceTriple.Taihe
|
|
|
logger.info("userId={}, idCardNo={}, mobile={}查询不到结果", userId, idCardNo, mobile);
|
|
|
User user = userRepository.getByIdAndIsDeletedFalse(userId);
|
|
|
if (user == null) {
|
|
|
- throw new AppMessageException(String.format("用户不存在,id: %d", userId));
|
|
|
+ throw new YwtCommonException(YwtCommonRespCode.P_ERR, String.format("用户不存在,id: %d", userId));
|
|
|
}
|
|
|
// 不能直接用 userName, 要使用 patientName, 因为用户可以添加其他患者
|
|
|
String patientName = request.getName();
|
|
@@ -2301,14 +2301,14 @@ public class TaiheRegisterProvider extends DubboTaiheRegisterServiceTriple.Taihe
|
|
|
idCardNo, patientInfo.getPatientType(), request.getAddress(), hospitalId, 0, cardType);
|
|
|
} else {
|
|
|
if (!"1".equals(cardType)) {
|
|
|
- throw new AppMessageException("港澳台患者需先到院线下建档。");
|
|
|
+ throw new YwtCommonException(YwtCommonRespCode.P_ERR, "港澳台患者需先到院线下建档。");
|
|
|
}
|
|
|
// 建档
|
|
|
mc = createNewMedicalCard(request.getAddress(), request.getCardNo(), userId, user, userName, hospitalId, cardType);
|
|
|
}
|
|
|
} else {
|
|
|
if (!"1".equals(cardType)) {
|
|
|
- throw new AppMessageException("港澳台患者需先到院线下建档。");
|
|
|
+ throw new YwtCommonException(YwtCommonRespCode.P_ERR, "港澳台患者需先到院线下建档。");
|
|
|
}
|
|
|
logger.error("获取就诊卡信息失败,patientName: {}, idCardNo: {}: {}", userName, idCardNo, getPatientInfoResponse.getMsg());
|
|
|
// 建档
|
|
@@ -2339,8 +2339,8 @@ public class TaiheRegisterProvider extends DubboTaiheRegisterServiceTriple.Taihe
|
|
|
builder.setCode(ResultCode.SUCCEED_VALUE)
|
|
|
.setHisPatientId(hisPatientId);
|
|
|
return builder.build();
|
|
|
- } catch (AppMessageException ame) {
|
|
|
- builder.setCode(ResultCode.APP_ERROR_VALUE)
|
|
|
+ } catch (YwtCommonException ame) {
|
|
|
+ builder.setCode(ResultCode.PARAMETER_ERROR_VALUE)
|
|
|
.setInfo(Checker.getStringValue(ame.getMessage()));
|
|
|
return builder.build();
|
|
|
} catch (Exception e) {
|
|
@@ -2355,7 +2355,7 @@ public class TaiheRegisterProvider extends DubboTaiheRegisterServiceTriple.Taihe
|
|
|
* 调用 HIS 接口建档,建档成功后新建就诊卡
|
|
|
*/
|
|
|
private MedicalCard createNewMedicalCard4HIS(String address, String cardNo, String city, String userName, String mobile,
|
|
|
- String isInsu, int hospitalId, int userId, int sex, int relationship, String cardType) throws AppMessageException {
|
|
|
+ String isInsu, int hospitalId, int userId, int sex, int relationship, String cardType) throws YwtCommonException {
|
|
|
MedicalCard mc;
|
|
|
CreatePatInfoRequest createPatInfoRequest = CreatePatInfoRequest.newBuilder()
|
|
|
.setAddress(Checker.getStringValue(address))
|
|
@@ -2369,7 +2369,7 @@ public class TaiheRegisterProvider extends DubboTaiheRegisterServiceTriple.Taihe
|
|
|
CreatePatInfoResponse createPatInfoResponse = taiheServiceBlockingStub.createPatInfo(createPatInfoRequest);
|
|
|
if (createPatInfoResponse.getCode() != ResultCode.SUCCEED_VALUE) {
|
|
|
// throw new AppMessageException(String.format("HIS 建档:%s", createPatInfoResponse.getInfo()));
|
|
|
- throw new AppMessageException(createPatInfoResponse.getInfo());
|
|
|
+ throw new YwtCommonException(YwtCommonRespCode.P_ERR, createPatInfoResponse.getInfo());
|
|
|
}
|
|
|
// 建档成功,新增诊疗卡记录
|
|
|
mc = addNewMedicalCard(userId, userName, mobile, sex, createPatInfoResponse.getPatientCard(),
|
|
@@ -2382,7 +2382,7 @@ public class TaiheRegisterProvider extends DubboTaiheRegisterServiceTriple.Taihe
|
|
|
*/
|
|
|
private MedicalCard createNewMedicalCard(String address, String cardNo, int userId,
|
|
|
User user, String userName,
|
|
|
- int hospitalId, String cardType) throws AppMessageException {
|
|
|
+ int hospitalId, String cardType) throws YwtCommonException {
|
|
|
return createNewMedicalCard4HIS(Checker.getStringValue(address), Checker.getStringValue(cardNo),
|
|
|
Checker.getStringValue(user.getCity()), userName, Checker.getStringValue(user.getMobile()), "",
|
|
|
hospitalId, userId, Checker.getIntegerValue(user.getSex()), 0, cardType);
|
|
@@ -2454,7 +2454,7 @@ public class TaiheRegisterProvider extends DubboTaiheRegisterServiceTriple.Taihe
|
|
|
// 港澳台身份证
|
|
|
// 如果前端传入的是大陆身份证,但提交的类型是港澳台类型,这里需要返回错误提示
|
|
|
if (IdCardUtil.verifyMainlandIdCard(idNo)) {
|
|
|
- throw new AppMessageException("“身份证号”或“证件类型”有误,建档不成功,请修改!");
|
|
|
+ throw new YwtCommonException(YwtCommonRespCode.P_ERR, "“身份证号”或“证件类型”有误,建档不成功,请修改!");
|
|
|
}
|
|
|
int sex = IdCardUtil.getSexIntWithGAT(idNo);
|
|
|
// 查询 HIS 是否已有 姓名+身份证 绑定的卡
|
|
@@ -2510,7 +2510,7 @@ public class TaiheRegisterProvider extends DubboTaiheRegisterServiceTriple.Taihe
|
|
|
} else {
|
|
|
// 大陆身份证
|
|
|
if (!IdCardUtil.verifyMainlandIdCard(idNo)) {
|
|
|
- throw new AppMessageException("“身份证号”或“证件类型”有误,建档不成功,请修改!");
|
|
|
+ throw new YwtCommonException(YwtCommonRespCode.P_ERR, "“身份证号”或“证件类型”有误,建档不成功,请修改!");
|
|
|
}
|
|
|
// 根据配置做实名校验
|
|
|
HisMedCardConfig config = configProvider.getHisMedCardConfig(hospitalId);
|
|
@@ -2520,9 +2520,9 @@ public class TaiheRegisterProvider extends DubboTaiheRegisterServiceTriple.Taihe
|
|
|
.setRealName(patientName)
|
|
|
.build());
|
|
|
if (validateIdCardResponse.getCode() != ResultCode.SUCCEED_VALUE)
|
|
|
- throw new AppMessageException(String.format("实名校验:%s", validateIdCardResponse.getInfo()));
|
|
|
+ throw new YwtCommonException(YwtCommonRespCode.P_ERR, String.format("实名校验:%s", validateIdCardResponse.getInfo()));
|
|
|
if (!validateIdCardResponse.getValid())
|
|
|
- throw new AppMessageException(String.format("实名校验:%s(^%s^%s^)", validateIdCardResponse.getInfo(),
|
|
|
+ throw new YwtCommonException(YwtCommonRespCode.P_ERR, String.format("实名校验:%s(^%s^%s^)", validateIdCardResponse.getInfo(),
|
|
|
idNo, patientName));
|
|
|
}
|
|
|
CheckUtil.ensureNotEmpty(phoneNo, "手机号不能为空");
|
|
@@ -2543,7 +2543,7 @@ public class TaiheRegisterProvider extends DubboTaiheRegisterServiceTriple.Taihe
|
|
|
.setMedicalCardId(medicalCard.getId())
|
|
|
.setMedicalCardNo(medicalCard.getCardNo());
|
|
|
sendMsgForCreateCard(userId, hospitalId, medicalCard, terminal);
|
|
|
- } catch (AppMessageException e) {
|
|
|
+ } catch (YwtCommonException e) {
|
|
|
// 建卡 HIS 返回失败,查询 HIS 是否已有 姓名+身份证 绑定的卡
|
|
|
// 先查一次数据库有没有存在建卡记录
|
|
|
MedicalCard card = medicalCardRepository.getByUserIdAndPatientNameAndIdNoAndCardTypeAndHospitalIdAndStatus(userId,
|
|
@@ -2595,7 +2595,7 @@ public class TaiheRegisterProvider extends DubboTaiheRegisterServiceTriple.Taihe
|
|
|
}
|
|
|
}
|
|
|
return builder.build();
|
|
|
- } catch (AppMessageException e) {
|
|
|
+ } catch (YwtCommonException e) {
|
|
|
builder.setCode(ResultCode.PARAMETER_ERROR_VALUE).setInfo(e.getMessage());
|
|
|
return builder.build();
|
|
|
} catch (Exception e) {
|
|
@@ -2614,7 +2614,7 @@ public class TaiheRegisterProvider extends DubboTaiheRegisterServiceTriple.Taihe
|
|
|
try {
|
|
|
age = IdCardUtil.calcAgeByIdNoAndBirthday(idNo, birthday);
|
|
|
realAge = String.valueOf(age);
|
|
|
- } catch (AppMessageException e) {
|
|
|
+ } catch (YwtCommonException e) {
|
|
|
e.printStackTrace();
|
|
|
logger.error("TaiheRegisterService#calAdditionalFee(idNo={} , birthday={} ): 无法获取身份证与生日", idNo, birthday);
|
|
|
}
|