|
@@ -3,7 +3,9 @@ package com.ywt.alipaympapi.service.impl;
|
|
|
import com.ywt.alipaympapi.core.ConstantDef;
|
|
|
import com.ywt.alipaympapi.core.utils.*;
|
|
|
import com.ywt.alipaympapi.models.enums.DatePeriodEnum;
|
|
|
+import com.ywt.alipaympapi.models.enums.PaymentChannelEnum;
|
|
|
import com.ywt.alipaympapi.models.enums.SexEnum;
|
|
|
+import com.ywt.alipaympapi.models.enums.TerminalEnum;
|
|
|
import com.ywt.alipaympapi.models.union_reg.HospitalCustomInfo;
|
|
|
import com.ywt.alipaympapi.service.IsvRegisterService;
|
|
|
import com.ywt.alipaympapi.service.services.DoctorSrv;
|
|
@@ -11,6 +13,9 @@ import com.ywt.alipaympapi.service.services.SystemSrv;
|
|
|
import com.ywt.core.exception.AppMessageException;
|
|
|
import com.ywt.gapi.Result;
|
|
|
import com.ywt.gapi.ResultCode;
|
|
|
+import com.ywt.gapi.order.CreateTaiheRegisteredOrderRequest;
|
|
|
+import com.ywt.gapi.order.CreateTaiheRegisteredOrderResponse;
|
|
|
+import com.ywt.gapi.order.OrderServiceGrpc;
|
|
|
import com.ywt.gapi.system.Dept;
|
|
|
import com.ywt.gapi.system.*;
|
|
|
import com.ywt.gapi.taihe.register.CancelRegisteredRequest;
|
|
@@ -51,6 +56,8 @@ public class IsvRegisterServiceImpl implements IsvRegisterService {
|
|
|
private DoctorSrv doctorSrv;
|
|
|
@Autowired
|
|
|
private DoctorServiceGrpc.DoctorServiceBlockingStub doctorServiceBlockingStub;
|
|
|
+ @Autowired
|
|
|
+ private OrderServiceGrpc.OrderServiceBlockingStub orderServiceBlockingStub;
|
|
|
|
|
|
@Override
|
|
|
public List<QueryDepartmentListResponseData> queryDepartmentList(QueryDepartmentListRequest request) throws Exception {
|
|
@@ -592,17 +599,108 @@ public class IsvRegisterServiceImpl implements IsvRegisterService {
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+ // 挂号确认
|
|
|
@Override
|
|
|
- public OrderConfirmResponseData orderConfirm(OrderConfirmRequest request) {
|
|
|
+ public OrderConfirmResponseData orderConfirm(OrderConfirmRequest request) throws Exception {
|
|
|
log.info("IsvRegisterServiceImpl#orderConfirm--OrderConfirmRequest:{}", JsonSerializer.toJson(request));
|
|
|
int userId = ContextHelper.getCurrentUserIdWrapped();//用户唯一识别号
|
|
|
- String doctorId = request.getDoctorId();//医生唯一识别号
|
|
|
- String orderSourceId = request.getOrderSourceId();//号源id
|
|
|
- String cardNum = request.getCardNum();//就诊卡卡号
|
|
|
int hospitalId = BizUtil.getCurrentHospitalId();
|
|
|
+ String deptCode = request.getDeptCode();
|
|
|
+ String deptName = request.getDeptName();
|
|
|
+ String doctorCode = request.getDoctorCode();
|
|
|
+ String doctorName = request.getDoctorName();
|
|
|
+ double registeredFee = request.getRegisteredFee();
|
|
|
+ double medicalFee = request.getMedicalFee();
|
|
|
+ String registeredDate = request.getRegisteredDate();
|
|
|
+ int period = request.getPeriod();
|
|
|
+ String startTime = request.getStartTime();
|
|
|
+ String endTime = request.getEndTime();
|
|
|
+ int medicalCardId = request.getMedicalCardId();
|
|
|
+ String scheduleItemCode = request.getScheduleItemCode();
|
|
|
+
|
|
|
+ if (hospitalId < 1) {
|
|
|
+ throw new AppMessageException("医院不存在");
|
|
|
+ }
|
|
|
+ if (StringHelper.isNullOrWhiteSpace(deptCode) || StringHelper.isNullOrWhiteSpace(deptName)) {
|
|
|
+ throw new AppMessageException("科室不存在");
|
|
|
+ }
|
|
|
+ if (StringHelper.isNullOrWhiteSpace(doctorCode) || StringHelper.isNullOrWhiteSpace(doctorName)) {
|
|
|
+ throw new AppMessageException("医生不存在");
|
|
|
+ }
|
|
|
+ if (StringHelper.isNullOrWhiteSpace(registeredDate)) {
|
|
|
+ throw new AppMessageException("请选择挂号日期");
|
|
|
+ }
|
|
|
+ Date date = DateUtil.parseDate(registeredDate, "yyyy-MM-dd");
|
|
|
+ if (date == null) {
|
|
|
+ throw new AppMessageException("预约日期格式不正确");
|
|
|
+ }
|
|
|
+ DatePeriodEnum datePeriodEnum = DatePeriodEnum.valueOf(period);
|
|
|
+ if (datePeriodEnum == null) {
|
|
|
+ throw new AppMessageException("预约时段不存在");
|
|
|
+ }
|
|
|
+ if (StringHelper.isNullOrWhiteSpace(startTime)) {
|
|
|
+ throw new AppMessageException("预约开始时间不存在");
|
|
|
+ }
|
|
|
+ if (StringHelper.isNullOrWhiteSpace(endTime)) {
|
|
|
+ throw new AppMessageException("预约结束时间不存在");
|
|
|
+ }
|
|
|
+ if (medicalCardId < 1) {
|
|
|
+ throw new AppMessageException("请选择就诊人");
|
|
|
+ }
|
|
|
+ if (StringHelper.isNullOrWhiteSpace(scheduleItemCode)) {
|
|
|
+ throw new AppMessageException("门诊排班项记录标识不能为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ int total = (int) ((registeredFee + medicalFee) * 100);
|
|
|
+ int source;
|
|
|
+ int terminal = ContextHelper.getCurrentTerminalWrapped();
|
|
|
+ switch (TerminalEnum.valueOf(terminal)) {
|
|
|
+ case TAI_HE_OFFICIAL:
|
|
|
+ source = TerminalEnum.TAI_HE_OFFICIAL.getValue();
|
|
|
+ break;
|
|
|
+ case NFYYBYFY_WXAPP:
|
|
|
+ source = TerminalEnum.NFYYBYFY_WXAPP.getValue();
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ source = TerminalEnum.TaiheWxOfficial.getValue();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ int paymentChannel = total > 0 ? PaymentChannelEnum.WX_PAY.getValue() : PaymentChannelEnum.FREE.getValue();
|
|
|
+
|
|
|
+ CreateTaiheRegisteredOrderRequest req = CreateTaiheRegisteredOrderRequest.newBuilder()
|
|
|
+ .setHospitalId(hospitalId)
|
|
|
+ .setDeptCode(deptCode)
|
|
|
+ .setDeptName(deptName)
|
|
|
+ .setDoctorCode(doctorCode)
|
|
|
+ .setDoctorName(doctorName)
|
|
|
+ .setTotal(total)
|
|
|
+ .setRegisteredFee((int) (registeredFee * 100))
|
|
|
+ .setMedicalFee((int) (medicalFee * 100))
|
|
|
+ .setRegisteredDate(date.getTime())
|
|
|
+ .setStartTime(startTime)
|
|
|
+ .setEndTime(endTime)
|
|
|
+ .setUserId(userId)
|
|
|
+ .setMedicalCardId(medicalCardId)
|
|
|
+ .setScheduleItemCode(scheduleItemCode)
|
|
|
+ .setPaymentChannel(paymentChannel)
|
|
|
+ .setSource(source)
|
|
|
+ .build();
|
|
|
+ CreateTaiheRegisteredOrderResponse res = orderServiceBlockingStub.createTaiheRegisteredOrder(req);
|
|
|
+ Result result = res.getResult();
|
|
|
|
|
|
+ if (result.getCode() != ResultCode.SUCCEED) {
|
|
|
+ throw new AppMessageException(result.getInfo()); //预约失败
|
|
|
+ }
|
|
|
+ if (!systemSrv.checkIsNetDept(deptCode, hospitalId)) {
|
|
|
+ //非互联网医院名医诊区挂号
|
|
|
+ OrderConfirmResponseData responseData = new OrderConfirmResponseData();
|
|
|
+ responseData.setOrderId(res.getOrderId() + "");
|
|
|
+ responseData.setOrderType(res.getOrderType());
|
|
|
+ responseData.setAmount(String.format("%.2f", (registeredFee + medicalFee)));
|
|
|
+ responseData.setStatus(res.getStatus());
|
|
|
|
|
|
+ return responseData;
|
|
|
+ }
|
|
|
return null;
|
|
|
}
|
|
|
|