Просмотр исходного кода

fix 调试接口,新增挂号接口

DYH2020 2 лет назад
Родитель
Сommit
7676b1226e

+ 30 - 0
onemini-hospital-empty/src/main/java/com/ywt/alipaympapi/models/enums/PaymentChannelEnum.java

@@ -0,0 +1,30 @@
+package com.ywt.alipaympapi.models.enums;
+
+/**
+ * 支付渠道
+ */
+public enum PaymentChannelEnum {
+    WX_PAY("微信", 1),
+    ALI_PAY("支付宝", 2),
+    CASH("现金", 3),          //现场支付
+    MEDICAL_CARD("诊疗卡", 4),
+    POS("POS机", 5),
+    FREE("无须支付", 6);
+
+    private final String displayName;
+
+    private final int value;
+
+    PaymentChannelEnum(String displayName, int value) {
+        this.displayName = displayName;
+        this.value = value;
+    }
+
+    public String getDisplayName() {
+        return displayName;
+    }
+
+    public int getValue() {
+        return value;
+    }
+}

+ 103 - 5
onemini-hospital-empty/src/main/java/com/ywt/alipaympapi/service/impl/IsvRegisterServiceImpl.java

@@ -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;
     }
 

+ 1 - 1
onemini-hospital-empty/src/main/resources/application.properties

@@ -2,4 +2,4 @@ server.port=8097
 logging.level.root=INFO
 
 #redis 配置
-redis.address=172.18.82.227:6339
+redis.address=192.168.3.202:6379

+ 8 - 2
onemini-hospital-sdk/src/main/java/com/ywt/alipaympapi/controller/AppointmentController.java

@@ -36,8 +36,14 @@ public class AppointmentController {
      */
     @PostMapping("isvRequest.order.orderConfirm")
     public ResponseVO<OrderConfirmResponseData> orderConfirm(OrderConfirmRequest request) {
-
-        return ResponseVO.success(isvRegisterService.orderConfirm(request));
+        try {
+            return ResponseVO.success(isvRegisterService.orderConfirm(request));
+        } catch (AppMessageException e) {
+            return ResponseVO.fail(Code.RESP_CODE_PARAM_ERROR, e.getMessage());
+        } catch (Exception e) {
+            log.error("AppointmentController#orderConfirm(request = {}):\n {}", request, e.getMessage(), e);
+            return ResponseVO.fail(Code.RESP_CODE_APP_EXCEPTION, e.getMessage());
+        }
     }
 
     /**

+ 8 - 1
onemini-hospital-sdk/src/main/java/com/ywt/alipaympapi/controller/PlanController.java

@@ -100,7 +100,14 @@ public class PlanController {
      */
     @PostMapping("isvRequest.order.queryHospitalDistrictList")
     public ResponseVO<List<QueryHospitalDistrictListResponseData>> queryHospitalDistrictList(QueryHospitalDistrictListRequest request) throws Exception {
-        return ResponseVO.success(isvRegisterService.queryHospitalDistrictList(request));
+        try {
+            return ResponseVO.success(isvRegisterService.queryHospitalDistrictList(request));
+        } catch (AppMessageException e) {
+            return ResponseVO.fail(Code.RESP_CODE_PARAM_ERROR, e.getMessage());
+        } catch (Exception e) {
+            log.error("PlanController#queryHospitalDistrictList(request = {}):\n {}", request, e.getMessage(), e);
+            return ResponseVO.fail(Code.RESP_CODE_APP_EXCEPTION, e.getMessage());
+        }
     }
 
     /**

+ 1 - 1
onemini-hospital-sdk/src/main/java/com/ywt/alipaympapi/service/IsvRegisterService.java

@@ -51,7 +51,7 @@ public interface IsvRegisterService {
      * @param request
      * @return 查询结果
      **/
-    OrderConfirmResponseData orderConfirm(OrderConfirmRequest request);
+    OrderConfirmResponseData orderConfirm(OrderConfirmRequest request) throws Exception;
 
     /**
      * 预约单详情

+ 13 - 0
onemini-hospital-sdk/src/main/java/com/ywt/request/register/OrderConfirmRequest.java

@@ -7,6 +7,7 @@ import com.ywt.response.register.OrderConfirmResponseData;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
+import org.springframework.web.bind.annotation.RequestParam;
 
 /**
  * 挂号确认请求体
@@ -21,6 +22,18 @@ public class OrderConfirmRequest implements IsvRequest<OrderConfirmResponseData>
     private String doctorId;//医生唯一识别号
     private String orderSourceId;//号源id
     private String cardNum;//就诊卡卡号
+    private String deptCode;    // 科室Code
+    private String deptName;    // 科室名称
+    private String doctorCode;  // 医生Code
+    private String doctorName;  // 医生名称
+    private double registeredFee;   // 挂号费
+    private double medicalFee;      // 诊查费
+    private String registeredDate;  // 预约日期
+    private int period;         // 预约时间段
+    private String startTime;   // 预约开始时间:HH:MI
+    private String endTime;     // 预约结束时间:HH:MI
+    private int medicalCardId;  // 就诊人Id
+    private String scheduleItemCode;    // 门诊排班项记录标识
 
     @Override
     public String serviceName() {

+ 2 - 0
onemini-hospital-sdk/src/main/java/com/ywt/response/register/OrderConfirmResponseData.java

@@ -14,4 +14,6 @@ import lombok.ToString;
 public class OrderConfirmResponseData implements IsvResponseData {
     private String orderId;//预约号
     private String amount;//支付金额
+    private int orderType;  // 订单类型
+    private int status;     // 订单类型
 }