Explorar el Código

fix: 门诊缴费兼容问题

Walker hace 2 años
padre
commit
cd787c0012

+ 82 - 2
onemini-hospital-empty/src/main/java/com/ywt/alipaympapi/service/impl/IsvPayServiceImpl.java

@@ -8,6 +8,7 @@ import com.ywt.alipaympapi.core.utils.*;
 import com.ywt.alipaympapi.face.IPayFace;
 import com.ywt.alipaympapi.models.Constants;
 import com.ywt.alipaympapi.models.enums.PaymentStatusEnum;
+import com.ywt.alipaympapi.models.enums.SexEnum;
 import com.ywt.core.exception.AppMessageException;
 import com.ywt.gapi.Result;
 import com.ywt.gapi.ResultCode;
@@ -54,6 +55,11 @@ public class IsvPayServiceImpl implements IsvPayService {
     public static final int TYPE_UNPAID_ZFB = 0;
     private static final int TYPE_PAID_ZFB = 1;
 
+    private static final int TYPE_PAID = 2;
+    // No pagination for now
+    private static final int PAGE_INDEX = 1;
+    private static final int PAGE_SIZE = 99999;
+
 
     @Autowired
     private TaiheServiceGrpc.TaiheServiceBlockingStub taiheServiceBlockingStub;
@@ -161,7 +167,7 @@ public class IsvPayServiceImpl implements IsvPayService {
                 CheckUtil.ensureNotEmpty(hisPatientId, "HIS 病人 id 不能为空");
                 // 根据 his_patient_id 获取诊疗卡信息
                 String pName = "";
-                Integer pAge = 0;
+                int pAge = 0;
                 String pGender = "";
                 String cardNum = "";
                 GetMedicalCardInfoByPatientIdRequest gResp = GetMedicalCardInfoByPatientIdRequest.newBuilder()
@@ -212,7 +218,45 @@ public class IsvPayServiceImpl implements IsvPayService {
                 da.setPayDate(Checker.getStringValue(request.getPayTime()));
                 da.setPrescribeDate(Checker.getStringValue(request.getPrescribeDate()));
                 break;
-
+            case Constants.TAIHE_HOSPITAL_ID:
+                // 太和从数据库读取数据
+                String hisOrderNo = request.getHisOrderNo();
+                CheckUtil.ensureNotEmpty(hisOrderNo, "hisOrderNo 不能为空");
+                GetOutpatientOrderDetailRequest req = GetOutpatientOrderDetailRequest.newBuilder()
+                        .setHospitalId(BizUtil.getHospitalIdByTerminalId(BizUtil.getCurrentTerminalWrapped()))
+                        .setHisOrderNo(hisOrderNo)
+                        .build();
+                GetOutpatientOrderDetailResponse response = taiheOutpatientServiceBlockingStub.getOutpatientOrderDetail(req);
+                if (response.getCode() != ResultCode.SUCCEED_VALUE)
+                    throw new AppMessageException(response.getMsg());
+                if (!Checker.isNone(response.getDetailList())) {
+                    list = response.getDetailList().stream()
+                            .map(i -> {
+                                OrderItem it = new OrderItem();
+                                it.setItemName(i.getItemName());
+                                it.setAmount(String.format("%.2f", i.getItemPrice() / 100d));
+                                it.setItemNum(String.valueOf(i.getItemNumber()));
+                                return it;
+                            })
+                            .collect(Collectors.toList());
+                }
+                da.setOrderItems(list);
+                da.setAge(Checker.getIntegerValue(response.getPatientAge()));
+                da.setUserName(Checker.getStringValue(response.getPatientName()));
+                da.setSex(SexEnum.getSexDisplayName(Checker.getIntegerValue(response.getPatientSex())));
+                da.setPayDate(request.getDate());
+                da.setOrderItems(list);
+//                da.setCardNum(cardNum);
+                da.setOrderId("");
+                da.setTotal(request.getTotal());
+                da.setStatus(request.getStatus());
+                da.setAmount(request.getAmount());
+                da.setHisPatientId(request.getHisPatientId());
+                da.setDoctorName(Checker.getStringValue(request.getDoctorName()));
+                da.setDeptName(Checker.getStringValue(request.getDeptName()));
+                da.setPayDate(Checker.getStringValue(request.getPayTime()));
+                da.setPrescribeDate(Checker.getStringValue(request.getPrescribeDate()));
+                break;
         }
         return da;
     }
@@ -409,6 +453,42 @@ public class IsvPayServiceImpl implements IsvPayService {
                             list.add(data);
                         }
                         break;
+                    case Constants.TAIHE_HOSPITAL_ID:
+                        // 太和已缴费列表读取数据库
+                        GetOutpatientOrderListRequest req2 = GetOutpatientOrderListRequest.newBuilder()
+                                .setType(TYPE_PAID)
+                                .setHisPatientId(hisPatientId)
+                                .setPageIndex(PAGE_INDEX)
+                                .setPageSize(PAGE_SIZE)
+                                .setUserId(userId)
+                                .setHospitalId(hospitalId)
+                                .build();
+                        GetOutpatientOrderListResponse res = orderServiceBlockingStub.getOutpatientOrderList(req2);
+                        Result result2 = res.getResult();
+                        if (result2.getCode() != ResultCode.SUCCEED) throw new AppMessageException(result2.getInfo());
+                        for (OutpatientOrder order : res.getOrderList()) {
+                            PayHistoryResponseData data = new PayHistoryResponseData();
+                            data.setStatus(status);
+                            data.setTitle("");
+                            data.setDeptName(order.getDeptName());
+                            data.setPrescribeDate(DateUtil.convertTimestampToDateString(order.getPrescriptionDate()));
+                            data.setName(resp.getPatientName());
+                            data.setAmount(String.format("%.2f", order.getTotal() / 100d));
+                            data.setTradeNo(""); //Todo
+                            data.setOutTradeNo("");//Todo
+                            data.setIdNum("");//Todo
+                            data.setInvoiceNo(order.getInvoiceNo());
+                            data.setHisPatientId(hisPatientId);
+//                            data.setPayTime(payItem.getPrescriptionDate());
+                            data.setTotal(Checker.getIntegerValue(order.getTotal()));
+                            data.setDoctorName(Checker.getStringValue(order.getDoctorName()));
+                            data.setDoctorCode(Checker.getStringValue(order.getDoctorCode()));
+//                            data.setHisClinicCode(Checker.getStringValue(payItem.getClinicCode()));
+                            data.setAge(Checker.getIntegerValue(pAge));
+                            data.setType(0);
+                            list.add(data);
+                        }
+                        break;
                 }
                 break;
         }