Ver código fonte

Merge branch 'master' of https://gogs.ywtinfo.com/guochengfeng/alipay-mp-service

DYH2020 2 anos atrás
pai
commit
d5e5dc2b0d
22 arquivos alterados com 907 adições e 55 exclusões
  1. 4 1
      onemini-hospital-empty/src/main/java/com/ywt/alipaympapi/core/utils/IdCardUtil.java
  2. 43 0
      onemini-hospital-empty/src/main/java/com/ywt/alipaympapi/models/enums/LastChoiceEnum.java
  3. 34 0
      onemini-hospital-empty/src/main/java/com/ywt/alipaympapi/models/vo/InpatientVo.java
  4. 65 0
      onemini-hospital-empty/src/main/java/com/ywt/alipaympapi/models/vo/MedicalCardVo.java
  5. 322 11
      onemini-hospital-empty/src/main/java/com/ywt/alipaympapi/service/impl/InpatientServiceImpl.java
  6. 300 10
      onemini-hospital-empty/src/main/java/com/ywt/alipaympapi/service/impl/IsvReportServiceImpl.java
  7. 5 1
      onemini-hospital-empty/src/main/java/com/ywt/alipaympapi/web/configs/WebMvcConfigure.java
  8. 30 0
      onemini-hospital-empty/src/main/java/com/ywt/alipaympapi/web/controller/DevController.java
  9. 54 13
      onemini-hospital-sdk/src/main/java/com/ywt/alipaympapi/controller/InpatientController.java
  10. 22 10
      onemini-hospital-sdk/src/main/java/com/ywt/alipaympapi/controller/ReportController.java
  11. 6 5
      onemini-hospital-sdk/src/main/java/com/ywt/alipaympapi/service/InpatientService.java
  12. 3 2
      onemini-hospital-sdk/src/main/java/com/ywt/alipaympapi/service/IsvReportService.java
  13. 2 0
      onemini-hospital-sdk/src/main/java/com/ywt/request/inpatient/DailyBillDetailsRequest.java
  14. 0 1
      onemini-hospital-sdk/src/main/java/com/ywt/request/inpatient/DailyBillRequest.java
  15. 4 0
      onemini-hospital-sdk/src/main/java/com/ywt/request/inpatient/DepositTradeDetailsRequest.java
  16. 2 0
      onemini-hospital-sdk/src/main/java/com/ywt/request/report/QueryReportDetailRequest.java
  17. 1 0
      onemini-hospital-sdk/src/main/java/com/ywt/request/report/QueryReportListRequest.java
  18. 1 0
      onemini-hospital-sdk/src/main/java/com/ywt/response/inpatient/DailyBillDetailsResponseData.java
  19. 1 0
      onemini-hospital-sdk/src/main/java/com/ywt/response/inpatient/DailyBillResponseData.java
  20. 3 1
      onemini-hospital-sdk/src/main/java/com/ywt/response/inpatient/DepositTradeListResponseData.java
  21. 4 0
      onemini-hospital-sdk/src/main/java/com/ywt/response/inpatient/InpatientListResponseData.java
  22. 1 0
      onemini-hospital-sdk/src/main/java/com/ywt/response/report/ReportItem.java

+ 4 - 1
onemini-hospital-empty/src/main/java/com/ywt/alipaympapi/core/utils/IdCardUtil.java

@@ -135,6 +135,9 @@ public final class IdCardUtil {
      * @return
      */
     public static int getCurrentAgeCommon(Date date) {
+        if (date == null) {
+            return 0;
+        }
         Calendar birthday = Calendar.getInstance();
         birthday.setTime(date);
         int year = birthday.get(Calendar.YEAR);
@@ -154,7 +157,7 @@ public final class IdCardUtil {
         if (currentMonth < month || (currentMonth == month && currentDay <= day)) {
             age--;
         }
-        return age < 0 ? 0 : age;
+        return Math.max(age, 0);
     }
 
     /**

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

@@ -0,0 +1,43 @@
+package com.ywt.alipaympapi.models.enums;
+
+public enum LastChoiceEnum {
+
+    False("否", 0),
+    True("是", 1);
+
+    private final String displayName;
+
+    private int value = 0;
+
+    LastChoiceEnum(String displayName, int value) {
+        this.displayName = displayName;
+        this.value = value;
+    }
+
+    public String getDisplayName() {
+        return displayName;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static LastChoiceEnum valueOf(int value) {
+        switch (value) {
+            case 1:
+                return True;
+            default:
+                return False;
+        }
+    }
+
+    public static String getSexDisplayName(int value){
+        LastChoiceEnum enumValue = valueOf(value);
+
+        if(enumValue != null){
+            return enumValue.getDisplayName();
+        }
+
+        return "未知";
+    }
+}

+ 34 - 0
onemini-hospital-empty/src/main/java/com/ywt/alipaympapi/models/vo/InpatientVo.java

@@ -0,0 +1,34 @@
+package com.ywt.alipaympapi.models.vo;
+
+public class InpatientVo {
+
+    private String admNo;
+
+    private String totalAmount;
+
+    private String depositBalance;
+
+    public String getAdmNo() {
+        return admNo;
+    }
+
+    public void setAdmNo(String admNo) {
+        this.admNo = admNo;
+    }
+
+    public String getTotalAmount() {
+        return totalAmount;
+    }
+
+    public void setTotalAmount(String totalAmount) {
+        this.totalAmount = totalAmount;
+    }
+
+    public String getDepositBalance() {
+        return depositBalance;
+    }
+
+    public void setDepositBalance(String depositBalance) {
+        this.depositBalance = depositBalance;
+    }
+}

+ 65 - 0
onemini-hospital-empty/src/main/java/com/ywt/alipaympapi/models/vo/MedicalCardVo.java

@@ -0,0 +1,65 @@
+package com.ywt.alipaympapi.models.vo;
+
+public class MedicalCardVo {
+
+    private int id;
+
+    private String patientName;
+
+    private String hisPatientId;
+
+    private int sex;
+
+    private String cardNum;
+
+    private String age;
+
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public String getPatientName() {
+        return patientName;
+    }
+
+    public void setPatientName(String patientName) {
+        this.patientName = patientName;
+    }
+
+    public String getHisPatientId() {
+        return hisPatientId;
+    }
+
+    public void setHisPatientId(String hisPatientId) {
+        this.hisPatientId = hisPatientId;
+    }
+
+    public int getSex() {
+        return sex;
+    }
+
+    public void setSex(int sex) {
+        this.sex = sex;
+    }
+
+    public String getCardNum() {
+        return cardNum;
+    }
+
+    public void setCardNum(String cardNum) {
+        this.cardNum = cardNum;
+    }
+
+    public String getAge() {
+        return age;
+    }
+
+    public void setAge(String age) {
+        this.age = age;
+    }
+}

+ 322 - 11
onemini-hospital-empty/src/main/java/com/ywt/alipaympapi/service/impl/InpatientServiceImpl.java

@@ -1,5 +1,17 @@
 package com.ywt.alipaympapi.service.impl;
 
+import com.ywt.alipaympapi.core.utils.*;
+import com.ywt.alipaympapi.models.BaseResponse;
+import com.ywt.alipaympapi.models.enums.LastChoiceEnum;
+import com.ywt.alipaympapi.models.vo.InpatientVo;
+import com.ywt.core.exception.AppMessageException;
+import com.ywt.gapi.Result;
+import com.ywt.gapi.ResultCode;
+import com.ywt.gapi.third.taihe.*;
+import com.ywt.gapi.user.GetMedicalCardListRequest;
+import com.ywt.gapi.user.GetMedicalCardListResponse;
+import com.ywt.gapi.user.MedicalCard;
+import com.ywt.gapi.user.UserServiceGrpc;
 import com.ywt.request.inpatient.DailyBillDetailsRequest;
 import com.ywt.request.inpatient.DailyBillRequest;
 import com.ywt.request.inpatient.DepositTradeDetailsRequest;
@@ -37,10 +49,14 @@ import com.ywt.response.inpatient.SettlementExecuteResponseData;
 import com.ywt.response.inpatient.SettlementListResponseData;
 import com.ywt.response.inpatient.SettlementQueryResponseData;
 import com.ywt.alipaympapi.service.InpatientService;
+import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import sun.util.calendar.BaseCalendar;
 
-import java.util.List;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 /**
  * @author
@@ -49,6 +65,14 @@ import java.util.List;
 @Service
 public class InpatientServiceImpl implements InpatientService {
 
+
+    @Autowired
+    private TaiheServiceGrpc.TaiheServiceBlockingStub taiheServiceBlockingStub;
+
+
+    @Autowired
+    private UserServiceGrpc.UserServiceBlockingStub userServiceBlockingStub;
+
     @Override
     public SettlementQueryResponseData informTradeResult(SettlementQueryRequest request) {
         return null;
@@ -65,8 +89,35 @@ public class InpatientServiceImpl implements InpatientService {
     }
 
     @Override
-    public List<InpatientListResponseData> inpatientList(InpatientListRequest request) {
-        return null;
+    public List<InpatientListResponseData> inpatientList(InpatientListRequest request) throws Exception {
+        int userId = Checker.parseInt(request.getUserId());
+        List<InpatientListResponseData> list = new ArrayList<>();
+        if (userId <= 0) return list; // 这个接口进入小程序首页就会调用;如果用户没有授权,返回空数据,而不是弹出获取用户信息授权(会违反小程序审核规则);
+
+        int hospId = BizUtil.getCurrentHospitalId();
+        GetMedicalCardListRequest getMedicalCardListRequest = GetMedicalCardListRequest.newBuilder()
+                .setHospitalId(hospId)
+                .setUserId(userId)
+                .setFlag(0)
+                .build();
+        GetMedicalCardListResponse getMedicalCardListResponse = userServiceBlockingStub.getMedicalCardList(getMedicalCardListRequest);
+        Result result = getMedicalCardListResponse.getResult();
+        if (result.getCode() == ResultCode.SUCCEED) {
+            for (MedicalCard medicalCard : getMedicalCardListResponse.getMedicalCardsList()) {
+                InpatientListResponseData data = new InpatientListResponseData();
+                data.setPatientId(medicalCard.getPatientId());
+                data.setInpatientId(medicalCard.getPatientId());
+                data.setInpatientName(medicalCard.getPatientName());
+                data.setSex(medicalCard.getSex() == 1 ? "男" : "女");
+                Date date = DateUtil.stringToDate(medicalCard.getBirthday(), DateUtil.DADE_FROMAT_YMD);
+                data.setInpatientAge(Integer.parseInt(getAgeFromMedicalCard(medicalCard)));
+                InpatientVo vo = getInpatientVo(userId, medicalCard.getPatientId());
+                data.setAdmNo(Checker.getStringValue(vo.getAdmNo()));
+                list.add(data);
+            }
+            return list;
+        }
+        return list;
     }
 
     @Override
@@ -75,13 +126,165 @@ public class InpatientServiceImpl implements InpatientService {
     }
 
     @Override
-    public List<DailyBillResponseData> dailyBillList(DailyBillRequest request) {
-        return null;
+    public List<DailyBillResponseData> dailyBillList(DailyBillRequest request) throws Exception {
+        int userId = Checker.parseInt(request.getUserId());
+        List<DailyBillResponseData> dailyBillList = new ArrayList<>();
+        if (userId <= 0) return dailyBillList; // 这个接口进入小程序首页就会调用;如果用户没有授权,返回空数据,而不是弹出获取用户信息授权(会违反小程序审核规则);
+
+        String date = DateUtil.formatDate(new Date(), "yyyy-MM-dd");
+        int hospId = BizUtil.getCurrentHospitalId();
+        List<MedicalCard> userMedCardList = getUserMedCardList(userId, hospId);
+        if (Checker.isNone(userMedCardList)) {
+            return dailyBillList;
+        }
+        for (MedicalCard m : userMedCardList) {
+            DailyBillResponseData data = new DailyBillResponseData();
+            String hisPatientId = m.getHisPatientId();
+            InpatientVo vo = getInpatientVo(userId, hisPatientId);
+            String totalAmount = Checker.getStringValue(vo.getTotalAmount());
+            String depositBalance = Checker.getStringValue(vo.getDepositBalance());
+            String admNo = Checker.getStringValue(vo.getAdmNo());
+            GetDayFeeListRequest req = GetDayFeeListRequest.newBuilder()
+                    .setPatientId(hisPatientId)
+                    .setBillDate(date)
+                    .setHospitalId(hospId)
+                    .setAdmNo(admNo)
+                    .build();
+            GetDayFeeListResponse resp = taiheServiceBlockingStub.getDayFeeList(req);
+            int todaySpend = 0;
+            if (resp.getCode() == BaseResponse.SUCCEED) {
+                List<DayFeeListItem> list = resp.getListList();
+                for (DayFeeListItem item : list) {
+                    todaySpend += item.getTotalAmt();
+                }
+                String patientName = Checker.getStringValue(resp.getPatientName());
+                data.setDepositBalance(depositBalance);
+                data.setSpendTotal(totalAmount);
+                data.setInpatientName(patientName);
+                data.setInpatientId(Checker.getStringValue(hisPatientId));
+                data.setCheckInDate(Checker.getStringValue(""));
+                data.setSpendToday(String.format("%.2f", todaySpend / 100d));
+                data.setId(Checker.getStringValue(""));
+                dailyBillList.add(data);
+            }
+        }
+        return dailyBillList;
+    }
+
+
+    /**
+     * 根据 userId & hospitalId 获取用户可用就诊卡列表
+     */
+    public List<MedicalCard> getUserMedCardList(int userId, int hospitalId) throws AppMessageException {
+        GetMedicalCardListRequest getMedicalCardListRequest = GetMedicalCardListRequest.newBuilder()
+                .setHospitalId(hospitalId)
+                .setUserId(userId)
+                .build();
+        GetMedicalCardListResponse getMedicalCardListResponse = userServiceBlockingStub.getMedicalCardList(getMedicalCardListRequest);
+        Result result = getMedicalCardListResponse.getResult();
+        if (result.getCode() != ResultCode.SUCCEED) throw new AppMessageException(result.getInfo());
+        return getMedicalCardListResponse.getMedicalCardsList();
+    }
+
+
+    private InpatientVo getInpatientVo(int userId, String hisPatientId) throws Exception {
+        InpatientVo vo = new InpatientVo();
+        GetInPatInfoRequest req = GetInPatInfoRequest.newBuilder()
+                .setPatientId(hisPatientId)
+                .setHospitalId(BizUtil.getCurrentHospitalId())
+                .build();
+        GetInPatInfoResponse resp = taiheServiceBlockingStub.getInPatInfo(req);
+        if (resp.getCode() == BaseResponse.SUCCEED) {
+            String totalAmount = String.format("%.2f", Checker.getDoubleValue(resp.getTotalAmount() / 100d));
+            String depositBalance = String.format("%.2f",  Checker.getDoubleValue(resp.getDepositBalance() / 100d));
+            vo.setAdmNo(resp.getAdmNo());
+            vo.setTotalAmount(totalAmount);
+            vo.setDepositBalance(depositBalance);
+            return vo;
+        }
+        return vo;
+    }
+
+
+    /**
+     * 根据用户ID获取用户诊疗卡信息(选择上一次选择的诊疗卡,或者是第一张)
+     *
+     * @return {@link MedicalCard}
+     */
+    private MedicalCard getMedicalCardByHisPatientId(int userId) {
+        MedicalCard medicalCard = null;
+        // 则获取当前用户的第一张诊疗卡,或者是上一次选择的诊疗卡(优先)
+        GetMedicalCardListRequest getMedicalCardListRequest = GetMedicalCardListRequest.newBuilder()
+                .setUserId(userId)
+                .build();
+        GetMedicalCardListResponse getMedicalCardListResponse = userServiceBlockingStub.getMedicalCardList(getMedicalCardListRequest);
+        Result result = getMedicalCardListResponse.getResult();
+        if (result.getCode() == ResultCode.SUCCEED) {
+            List<MedicalCard> cardList = getMedicalCardListResponse.getMedicalCardsList();
+            if (!Checker.isNone(cardList)) {
+                medicalCard = cardList.stream().filter(p -> p.getLastChoice() == LastChoiceEnum.True.getValue()).findFirst().orElse(null);
+                if (Checker.isNone(medicalCard)) {
+                    medicalCard = cardList.get(0);
+                }
+            }
+        }
+        return medicalCard;
     }
 
     @Override
-    public DailyBillDetailsResponseData dailyBillDetail(DailyBillDetailsRequest request) {
-        return null;
+    public DailyBillDetailsResponseData dailyBillDetail(DailyBillDetailsRequest request) throws Exception {
+        DailyBillDetailsResponseData data = new DailyBillDetailsResponseData();
+        int userId = ContextHelper.getCurrentUserIdWrapped();
+        int hospitalId = BizUtil.getCurrentHospitalId();
+        String date = request.getBillDate();
+        List<MedicalCard> userMedCardList = new ArrayList<>();
+        userMedCardList = getUserMedCardList(userId, hospitalId);
+        if (Checker.isNone(userMedCardList)) {
+            throw new AppMessageException("该用户没有绑定诊疗卡");
+        }
+        for (MedicalCard m : userMedCardList) {
+            if (m.getPatientId().equals(request.getHisPatientId())) {
+                InpatientVo vo = null;
+                String admNo = "";
+                String hisPatientId = m.getHisPatientId();
+                vo = getInpatientVo(userId, hisPatientId);
+                String totalAmount = Checker.getStringValue(vo.getTotalAmount());
+                String depositBalance = Checker.getStringValue(vo.getDepositBalance());
+                admNo = Checker.getStringValue(vo.getAdmNo());
+                GetDayFeeListRequest req = GetDayFeeListRequest.newBuilder()
+                        .setPatientId(hisPatientId)
+                        .setBillDate(request.getBillDate())
+                        .setHospitalId(hospitalId)
+                        .setAdmNo(admNo)
+                        .build();
+                GetDayFeeListResponse resp = taiheServiceBlockingStub.getDayFeeList(req);
+                int todaySpend = 0;
+                if (resp.getCode() == BaseResponse.SUCCEED) {
+                    List<SettlementQueryResponseData.Item> payItemList = new ArrayList<>();
+                    List<DayFeeListItem> list = resp.getListList();
+                    for (DayFeeListItem item : list) {
+                        SettlementQueryResponseData.Item it = new SettlementQueryResponseData.Item();
+                        it.setItemName(Checker.getStringValue(item.getItemName()));
+                        it.setItemCount(Checker.getIntegerValue(Integer.parseInt(Checker.getStringValue(item.getQuantity()))));
+                        it.setItemPrice(String.format("%.2f", item.getPrice() / 100d));
+                        it.setItemAmount(String.format("%.2f", item.getTotalAmt() / 100d));
+                        todaySpend += item.getTotalAmt();
+                        payItemList.add(it);
+                    }
+                    data.setBillDate(request.getBillDate());
+                    data.setDepositBalance(depositBalance);
+                    data.setInpatientName(m.getPatientName());
+                    data.setPayItemList(payItemList);
+                    data.setSpendTotal(totalAmount);
+                    data.setSpendToday(String.format("%.2f", todaySpend / 100d));
+                    data.setCheckInDate(Checker.getStringValue(""));
+                    data.setInpatientId(resp.getPatientId());
+                    data.setId(Checker.getStringValue(""));
+                }
+            }
+
+        }
+        return data;
     }
 
     @Override
@@ -95,13 +298,97 @@ public class InpatientServiceImpl implements InpatientService {
     }
 
     @Override
-    public List<DepositTradeListResponseData> queryTradeList(DepositTradeListRequest request) {
-        return null;
+    public List<DepositTradeListResponseData> queryTradeList(DepositTradeListRequest request) throws Exception {
+        String hisPatientId = request.getInpatientId();
+        List<DepositTradeListResponseData> depositList = new ArrayList<>();
+        if (Checker.isNone(hisPatientId)) {
+            throw new AppMessageException("该用户没有绑定诊疗卡");
+        }
+        GetInPatInfoRequest req = GetInPatInfoRequest.newBuilder()
+                .setPatientId(hisPatientId)
+                .setHospitalId(BizUtil.getCurrentHospitalId())
+                .build();
+        GetInPatInfoResponse resp = taiheServiceBlockingStub.getInPatInfo(req);
+        if (resp.getCode() == BaseResponse.SUCCEED) {
+            String admNo = Checker.getStringValue(resp.getAdmNo());
+            GetCashListRequest requ = GetCashListRequest.newBuilder()
+                    .setPatientId(hisPatientId)
+                    .setAdmNo(admNo)
+                    .setHospitalId(BizUtil.getCurrentHospitalId())
+                    .build();
+            GetCashListResponse res = taiheServiceBlockingStub.getCashList(requ);
+            if (res.getCode() == BaseResponse.SUCCEED) {
+                List<CashListItem> list = res.getListList();
+                DepositTradeListResponseData da = new DepositTradeListResponseData();
+                for (CashListItem i : list) {
+                    da.setInpatientName(Checker.getStringValue(i.getPayUserName()));
+                    da.setAmount(String.format("%.2f", i.getPayAmout() / 100d));
+                    da.setOutTradeNo(i.getReceiptNo());
+                    da.setPayTime(i.getPayDate() + "" + i.getPayTime());
+                    da.setTradeNo(Checker.getStringValue(""));
+                    da.setDepositId(Checker.getStringValue(""));
+                    String depositBalance = String.format("%.2f", resp.getDepositBalance() / 100d);
+                    da.setDepositBalance(depositBalance);
+                    da.setStatus(Checker.getStringValue(""));
+                    da.setDepositId(Checker.getStringValue(i.getReceiptNo()));
+                    da.setAdmNo(Checker.getStringValue(admNo));
+                    depositList.add(da);
+                }
+                return depositList;
+            }
+            return depositList;
+        }
+        return depositList;
     }
 
     @Override
-    public DepositTradeDetailsResponseData queryTradeDetails(DepositTradeDetailsRequest request) {
-        return null;
+    public DepositTradeDetailsResponseData queryTradeDetails(DepositTradeDetailsRequest request) throws Exception {
+        String hisPatientId = request.getHisPatientId();
+        if (Checker.isNone(hisPatientId)) {
+            throw new AppMessageException("该用户没有绑定诊疗卡");
+        }
+        if (Checker.isNone(request.getReceiptNo())) {
+            throw new AppMessageException("没有押金缴纳记录");
+        }
+        GetInPatInfoRequest req = GetInPatInfoRequest.newBuilder()
+                .setPatientId(hisPatientId)
+                .setHospitalId(BizUtil.getCurrentHospitalId())
+                .build();
+        GetInPatInfoResponse resp = taiheServiceBlockingStub.getInPatInfo(req);
+        if (resp.getCode() == BaseResponse.SUCCEED) {
+            String admNo = Checker.getStringValue(resp.getAdmNo());
+            GetCashListRequest requ = GetCashListRequest.newBuilder()
+                    .setPatientId(hisPatientId)
+                    .setAdmNo(admNo)
+                    .setHospitalId(BizUtil.getCurrentHospitalId())
+                    .build();
+            GetCashListResponse res = taiheServiceBlockingStub.getCashList(requ);
+            DepositTradeDetailsResponseData data = new DepositTradeDetailsResponseData();
+            if (res.getCode() == BaseResponse.SUCCEED) {
+                List<CashListItem> list = res.getListList();
+                DepositTradeDetailsResponseData da = new DepositTradeDetailsResponseData();
+                for (CashListItem i : list) {
+                    if (request.getReceiptNo().equals(i.getReceiptNo())) {
+                        {
+                            da.setInpatientName(Checker.getStringValue(i.getPayUserName()));
+                            da.setAmount(String.format("%.2f", i.getPayAmout() / 100d));
+                            da.setOutTradeNo(i.getReceiptNo());
+                            da.setPayTime(i.getPayDate() + "" + i.getPayTime());
+                            da.setTradeNo(Checker.getStringValue(""));
+                            da.setDepositId(Checker.getStringValue(""));
+                            String depositBalance = String.format("%.2f", resp.getDepositBalance() / 100d);
+                            da.setDepositBalance(depositBalance);
+                            da.setStatus(Checker.getStringValue(i.getPayFlag()));
+                            da.setInpatientNo(hisPatientId);
+                            return da;
+                        }
+                    }
+                }
+                throw new AppMessageException("没有押金缴纳记录");
+            }
+            throw new AppMessageException("没有押金缴纳记录");
+        }
+        throw new AppMessageException("没有押金缴纳记录");
     }
 
     @Override
@@ -134,6 +421,30 @@ public class InpatientServiceImpl implements InpatientService {
         return null;
     }
 
+    private String getAgeFromMedicalCard(MedicalCard card) {
+        int age = -1;
+        String idNo = card.getIdNo();
+        String birthday = card.getBirthday();
+        if (!StringHelper.isNullOrEmpty(idNo)) {
+            try {
+                age = IdCardUtil.getCurrentAge(idNo);
+            } catch (Exception e) {
+                log.error("IsvMedicCardServiceImpl#getAgeFromMedicalCard(idNo = {}): 无法获取年龄 {}", idNo, e.getMessage(), e);
+            }
+        } else if (!StringHelper.isNullOrEmpty(birthday)) {
+            try {
+                age = IdCardUtil.getCurrentAgeByBirthday(birthday, IdCardUtil.DATE_PATTERN2);
+            } catch (Exception e) {
+                log.error("IsvMedicCardServiceImpl#getAgeFromMedicalCard(birthday = {}): 无法获取年龄 {}", birthday, e.getMessage(), e);
+            }
+        }
+        // 不返回年龄为 "-1"
+        if (age < 0) {
+            return "";
+        }
+        return String.valueOf(age);
+    }
+
     @Override
     public InpatientDetailsResponseData inpatientDetails(InpatientDetailsRequest request) {
         return null;

+ 300 - 10
onemini-hospital-empty/src/main/java/com/ywt/alipaympapi/service/impl/IsvReportServiceImpl.java

@@ -1,37 +1,327 @@
 package com.ywt.alipaympapi.service.impl;
 
-import com.ywt.alipaympapi.core.utils.ContextHelper;
+import com.ywt.alipaympapi.core.utils.*;
+import com.ywt.alipaympapi.models.vo.MedicalCardVo;
+import com.ywt.core.exception.AppMessageException;
+import com.ywt.gapi.Result;
+import com.ywt.gapi.ResultCode;
+import com.ywt.gapi.third.taihe.*;
+import com.ywt.gapi.user.GetMedicalCardListRequest;
+import com.ywt.gapi.user.GetMedicalCardListResponse;
+import com.ywt.gapi.user.MedicalCard;
+import com.ywt.gapi.user.UserServiceGrpc;
 import com.ywt.model.PageVO;
+import com.ywt.model.Pagination;
 import com.ywt.request.report.QueryReportDetailRequest;
 import com.ywt.request.report.QueryReportListRequest;
+import com.ywt.response.register.QueryDoctorListResponseData;
 import com.ywt.response.report.QueryReportDetailResponseData;
 import com.ywt.response.report.QueryReportListResponseData;
 import com.ywt.alipaympapi.service.IsvReportService;
+import com.ywt.response.report.ReportItem;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.List;
+
+@Slf4j
 @Service
 public class IsvReportServiceImpl implements IsvReportService {
 
+    @Autowired
+    private UserServiceGrpc.UserServiceBlockingStub userServiceBlockingStub;
+
+    @Autowired
+    private TaiheServiceGrpc.TaiheServiceBlockingStub taiheServiceBlockingStub;
 
     @Override
-    public QueryReportDetailResponseData queryReportDetail(QueryReportDetailRequest request) {
-        return null;
+    public QueryReportDetailResponseData queryReportDetail(QueryReportDetailRequest request) throws Exception{
+        QueryReportDetailResponseData data = new QueryReportDetailResponseData();
+        if (StringHelper.isNullOrWhiteSpace(request.getRecordId())) {
+            throw new AppMessageException("没有检验检查报告Id");
+        }
+
+        if (StringHelper.isNullOrWhiteSpace(request.getRecordId())) {
+            throw new AppMessageException("没有报告类型");
+        }
+            String userIdStr = request.getUserId();
+            int userId = Integer.parseInt(userIdStr);
+            int hospitalId = BizUtil.getCurrentHospitalId();
+            String hisPatientId = request.getHisPatientId();
+            MedicalCardVo card = getCard(userId, hospitalId, hisPatientId);
+            String type = request.getType();
+            if ("检查报告".equals(type)) {
+
+                GetInspectionDetailRequest req = GetInspectionDetailRequest.newBuilder()
+                        .setReportId(request.getRecordId())
+                        .setHospitalId(hospitalId)
+                        .build();
+                GetInspectionDetailResponse res = taiheServiceBlockingStub.getInspectionDetail(req);
+                if (res.getCode() == ResultCode.SUCCEED_VALUE) {
+                    List<String> reportItem = new ArrayList<>();
+                    InspectionDetail detail = res.getDetail();
+                    data.setRecordId(request.getRecordId());
+                    data.setUserName(Checker.getStringValue(card.getPatientName()));
+                    data.setUserSex(card.getSex() == 1 ? "男": card.getSex() ==  2 ? "女": "");
+                    data.setUserAge(Checker.getStringValue(card.getAge()));
+                    data.setCardNum(Checker.getStringValue(card.getCardNum()));
+                    data.setDepartmentName(detail.getDeptName());
+                    data.setApplyDoctorName(detail.getDoctorName());
+                    reportItem.add(detail.getDiagnose());
+                    data.setDiagnosis(reportItem);
+                    data.setConfirmDoctorName(detail.getInspectionDoctor());
+                    data.setReportDate(detail.getInspectionDate());
+                    data.setReportImageDesc(detail.getInspectionResult());
+
+                } else {
+                    com.ywt.gapi.user.GetInspectionReportDetailRequest girdReq = com.ywt.gapi.user.GetInspectionReportDetailRequest.newBuilder()
+                            .setReportId(request.getRecordId())
+                            .setHospitalId(hospitalId)
+                            .build();
+                    com.ywt.gapi.user.GetInspectionReportDetailResponse girdResp = userServiceBlockingStub.getInspectionReportDetail(girdReq);
+                    if (girdResp.getResult().getCode() == ResultCode.SUCCEED) {
+                        List<String> reportItem = new ArrayList<>();
+                        com.ywt.gapi.user.InspectionReportDetail detail = girdResp.getReport();
+                        data.setRecordId(request.getRecordId());
+                        data.setUserName(card.getPatientName());
+                        data.setUserSex(card.getSex() == 1 ? "男": card.getSex() ==  2 ? "女": "");
+                        data.setUserAge(Checker.getStringValue(card.getAge()));
+                        data.setCardNum(Checker.getStringValue(card.getCardNum()));
+                        data.setDepartmentName(detail.getDeptName());
+                        data.setApplyDoctorName(Checker.getStringValue(detail.getAppDocName()));
+                        reportItem.add(Checker.getStringValue(detail.getDiagnosis()));
+                        data.setDiagnosis(reportItem);
+                        data.setConfirmDoctorName(Checker.getStringValue(detail.getVerifyDocName()));
+                        data.setReportDate(DateUtil.convertTimestampToDateString(detail.getExaminationDate(), "yyyy年MM月dd日 HH:mm:ss"));
+                        data.setReportImageDesc(Checker.getStringValue(detail.getExamination()));
+                    }
+                    throw new AppMessageException("没有此报告");
+                }
+
+            }
+            if ("检验报告".equals(type)) {
+                GetLaboratoryDetailRequest req = GetLaboratoryDetailRequest.newBuilder()
+                        .setInspectionId(request.getRecordId())
+                        .setHospitalId(hospitalId)
+                        .build();
+                GetLaboratoryDetailResponse res = taiheServiceBlockingStub.getLaboratoryDetail(req);
+                if (res.getCode() == ResultCode.SUCCEED_VALUE) {
+                    List<ReportItem> reportItemList = new ArrayList<>();
+                    List<String> reportItem = new ArrayList<>();
+                    data.setDiagnosis(reportItem);
+                    data.setUserName(card.getPatientName());
+                    data.setUserSex(card.getSex() == 1 ? "男": card.getSex() ==  2 ? "女": "");
+                    data.setUserAge(Checker.getStringValue(card.getAge()));
+                    data.setItemName(res.getTitle());
+                    data.setReportDate(res.getTime());
+                    data.setConfirmDoctorName(res.getDoctor());
+                    data.setCardNum(Checker.getStringValue(card.getCardNum()));
+                    for (LaboratoryDetail detail : res.getDetailList()) {
+                        ReportItem r = new ReportItem();
+                        r.setItemName(detail.getItemName());
+                        String flag = detail.getResultFlag() == 1 ? "HIGH" : detail.getResultFlag() == 2 ? "LOW" : "NORMAL";
+                        r.setPnFlag(flag);
+                        r.setReference(detail.getItemRef());
+                        r.setTxtVal(detail.getTestResult());
+                        r.setUnit(detail.getUnit());
+                        reportItemList.add(r);
+                    }
+                    data.setReportItemList(reportItemList);
+                } else {
+                    com.ywt.gapi.user.GetLaboratoryReportDetailRequest glrdReq = com.ywt.gapi.user.GetLaboratoryReportDetailRequest.newBuilder()
+                            .setInspectionId(request.getRecordId())
+                            .setHospitalId(hospitalId)
+                            .build();
+                    com.ywt.gapi.user.GetLaboratoryReportDetailResponse glrdResp = userServiceBlockingStub.getLaboratoryReportDetail(glrdReq);
+                    if (glrdResp.getResult().getCode() == ResultCode.SUCCEED) {
+                        List<ReportItem> reportItemList = new ArrayList<>();
+                        List<String> reportItem = new ArrayList<>();
+                        data.setDiagnosis(reportItem);
+                        data.setUserName(Checker.getStringValue(card.getPatientName()));
+                        data.setUserSex(card.getSex() == 1 ? "男": card.getSex() ==  2 ? "女": "");
+                        data.setUserAge(Checker.getStringValue(card.getAge()));
+                        data.setItemName(res.getTitle());
+                        data.setReportDate(res.getTime());
+                        data.setConfirmDoctorName(res.getDoctor());
+                        data.setCardNum(Checker.getStringValue(card.getCardNum()));
+                        data.setRecordId(request.getRecordId());
+                        for (com.ywt.gapi.user.LaboratoryReportDetail detail : glrdResp.getDetailList()) {
+                            ReportItem r = new ReportItem();
+                            r.setItemName(Checker.getStringValue(detail.getItemName()));
+                            r.setPnFlag(Checker.getStringValue(detail.getResultFlag()));
+                            r.setReference(detail.getItemRef());
+                            r.setTxtVal(detail.getTestResult());
+                            r.setUnit(detail.getUnit());
+                            reportItemList.add(r);
+                        }
+                        data.setReportItemList(reportItemList);
+                    }
+                    throw new AppMessageException("没有此报告");
+                }
+            }
+        return data;
     }
 
     @Override
-    public PageVO<QueryReportListResponseData> queryReportList(QueryReportListRequest request) {
-        int userId = ContextHelper.getCurrentUserIdWrapped();
-        String cardNum = request.getCardNum();
+    public PageVO<QueryReportListResponseData> queryReportList(QueryReportListRequest request) throws Exception {
+        List<QueryReportListResponseData> list = new ArrayList<>();
+        String userIdStr = request.getUserId();
+        int userId = Integer.parseInt(userIdStr);
         // 报告类型:分为"检查报告"、"检验报告"两种
         String type = request.getType();
-        if ("检查报告".equals(type)){
+        int hospitalId = BizUtil.getCurrentHospitalId();
+        int pageIndex = request.getPageIndex();
+        int pageSize = request.getPageSize();
+        String hisPatientId = request.getHisPatientId();
+        int total = 0;
+        int totalT = 0;
+        int totalTh = 0;
+            MedicalCardVo card = getCard(userId, hospitalId, hisPatientId);
 
-        }
-        if ("检验报告".equals(type)){
+            if ("检查报告".equals(type)) {
+                GetInspectionListRequest getInspectionListRequest = GetInspectionListRequest.newBuilder()
+                        .setPatientId(hisPatientId)
+                        .setHospitalId(hospitalId)
+                        .build();
+                GetInspectionListResponse res = taiheServiceBlockingStub.getInspectionList(getInspectionListRequest);
+                if (res.getCode() == ResultCode.SUCCEED_VALUE) {
+                    total = res.getInspectionReportList().size();
+                    for (InspectionReport q : res.getInspectionReportList()) {
+                        QueryReportListResponseData da = new QueryReportListResponseData();
+                        da.setItemName(Checker.getStringValue(q.getReportTitle()));
+                        da.setRecordId(Checker.getStringValue(q.getReportId()));
+                        da.setUserName(card.getPatientName());
+                        da.setCardNum(card.getCardNum());
+                        da.setStatus(Checker.getStringValue(""));
+                        da.setDiagnosis(Checker.getStringValue(""));
+                        da.setType(Checker.getStringValue(""));
+                        da.setApplyDate(Checker.getStringValue(""));
+                        list.add(da);
+                    }
+                }
+                com.ywt.gapi.user.GetInspectionReportListRequest girlReq = com.ywt.gapi.user.GetInspectionReportListRequest.newBuilder()
+                        .setMedicalCardId(card.getId())
+                        .setUserId(userId)
+                        .setHospitalId(hospitalId)
+                        .build();
+                com.ywt.gapi.user.GetInspectionReportListResponse girlResp = userServiceBlockingStub.getInspectionReportList(girlReq);
+                if (girlResp.getResult().getCode() == ResultCode.SUCCEED) {
+                    totalT = girlResp.getReportList().size();
+                    for (com.ywt.gapi.user.InspectionReport report : girlResp.getReportList()) {
+                        QueryReportListResponseData da = new QueryReportListResponseData();
+                        da.setItemName(Checker.getStringValue(report.getReportTitle()));
+                        da.setRecordId(Checker.getStringValue(report.getReportId()));
+                        da.setUserName(card.getPatientName());
+                        da.setCardNum(card.getCardNum());
+                        da.setStatus(Checker.getStringValue(""));
+                        da.setDiagnosis(Checker.getStringValue(""));
+                        da.setType(Checker.getStringValue(""));
+                        da.setApplyDate(Checker.getStringValue(""));
+                        list.add(da);
+                    }
+                }
 
+            }
+            if ("检验报告".equals(type)) {
+                GetLaboratoryListRequest req = GetLaboratoryListRequest.newBuilder()
+                        .setPatientId(hisPatientId)
+                        .setHospitalId(hospitalId)
+                        .build();
+                GetLaboratoryListResponse thRes = taiheServiceBlockingStub.getLaboratoryList(req);
+                if (thRes.getCode() == ResultCode.SUCCEED_VALUE) {
+                    total = thRes.getReportList().size();
+                    for (LaboratoryReport q : thRes.getReportList()) {
+                        QueryReportListResponseData da = new QueryReportListResponseData();
+                        da.setItemName(Checker.getStringValue(q.getReportTitle()));
+                        da.setDepartmentName(Checker.getStringValue(q.getDeptName()));
+                        da.setRecordId(Checker.getStringValue(q.getReportId()));
+                        da.setUserName(card.getPatientName());
+                        da.setCardNum(card.getCardNum());
+                        list.add(da);
+                    }
+                }
+                com.ywt.gapi.user.GetLaboratoryReportListRequest glrlReq = com.ywt.gapi.user.GetLaboratoryReportListRequest.newBuilder()
+                        .setMedicalCardId(card.getId())
+                        .setUserId(userId)
+                        .setHospitalId(hospitalId)
+                        .build();
+                com.ywt.gapi.user.GetLaboratoryReportListResponse glrlResp = userServiceBlockingStub.getLaboratoryReportList(glrlReq);
+                if (glrlResp.getResult().getCode() == ResultCode.SUCCEED) {
+                    totalT = glrlResp.getReportList().size();
+                    for (com.ywt.gapi.user.LaboratoryReport report : glrlResp.getReportList()) {
+                        QueryReportListResponseData da = new QueryReportListResponseData();
+                        da.setItemName(Checker.getStringValue(report.getInspectionName()));
+                        da.setDepartmentName(Checker.getStringValue(report.getDeptName()));
+                        da.setRecordId(Checker.getStringValue(report.getInpatientId()));
+                        da.setUserName(card.getPatientName());
+                        da.setCardNum(card.getCardNum());
+                        list.add(da);
+                    }
+                }
+
+            }
+        totalTh = total + totalT;
+        Pagination pagination = new Pagination(pageIndex, pageSize, totalTh);
+        PageVO<QueryReportListResponseData> res = new PageVO<>(pagination, list);
+        return res;
+    }
+
+
+    /**
+     * 根据 userId & hospitalId 获取用户可用就诊卡列表
+     */
+    public List<MedicalCard> getUserMedCardList(int userId, int hospitalId) throws AppMessageException {
+        GetMedicalCardListRequest getMedicalCardListRequest = GetMedicalCardListRequest.newBuilder()
+                .setHospitalId(hospitalId)
+                .setUserId(userId)
+                .build();
+        GetMedicalCardListResponse getMedicalCardListResponse = userServiceBlockingStub.getMedicalCardList(getMedicalCardListRequest);
+        Result result = getMedicalCardListResponse.getResult();
+        if (result.getCode() != ResultCode.SUCCEED) throw new AppMessageException(result.getInfo());
+        return getMedicalCardListResponse.getMedicalCardsList();
+    }
+
+    public MedicalCardVo getCard(int userId, int hospitalId, String hisPatientId) throws Exception {
+        List<MedicalCard> list = getUserMedCardList(userId, hospitalId);
+        if (Checker.isNone(list)) throw new AppMessageException("没有诊疗卡");
+        for (MedicalCard card : list) {
+            if (hisPatientId.equals(card.getPatientId())) {
+                MedicalCardVo v = new MedicalCardVo();
+                v.setId(card.getCardId());
+                v.setSex(card.getSex());
+                v.setHisPatientId(card.getPatientId());
+                v.setPatientName(card.getPatientName());
+                v.setCardNum(card.getCardNo());
+                v.setAge(getAgeFromMedicalCard(card));
+                return v;
+            }
         }
+        throw new AppMessageException("没有此报告");
+    }
 
-        return null;
+    private String getAgeFromMedicalCard(MedicalCard card) {
+        int age = -1;
+        String idNo = card.getIdNo();
+        String birthday = card.getBirthday();
+        if (!StringHelper.isNullOrEmpty(idNo)) {
+            try {
+                age = IdCardUtil.getCurrentAge(idNo);
+            } catch (Exception e) {
+                log.error("IsvMedicCardServiceImpl#getAgeFromMedicalCard(idNo = {}): 无法获取年龄 {}", idNo, e.getMessage(), e);
+            }
+        } else if (!StringHelper.isNullOrEmpty(birthday)) {
+            try {
+                age = IdCardUtil.getCurrentAgeByBirthday(birthday, IdCardUtil.DATE_PATTERN2);
+            } catch (Exception e) {
+                log.error("IsvMedicCardServiceImpl#getAgeFromMedicalCard(birthday = {}): 无法获取年龄 {}", birthday, e.getMessage(), e);
+            }
+        }
+        // 不返回年龄为 "-1"
+        if (age < 0) {
+            return "";
+        }
+        return String.valueOf(age);
     }
 }

+ 5 - 1
onemini-hospital-empty/src/main/java/com/ywt/alipaympapi/web/configs/WebMvcConfigure.java

@@ -13,7 +13,11 @@ public class WebMvcConfigure extends WebMvcConfigurerAdapter {
     public void addInterceptors(InterceptorRegistry registry) {
         registry.addInterceptor((AccessBehaviorInterceptor) SpringContext.getBean(AccessBehaviorInterceptor.class))
                 .addPathPatterns("/**")
-                .excludePathPatterns("/auth/bind");
+                .excludePathPatterns("/auth/bind")
+                .excludePathPatterns("/dev/*")
+                .excludePathPatterns("/isvRequest.inpatient.list")
+                .excludePathPatterns("/isvRequest.home.dailyBill.list")
+        ;
         super.addInterceptors(registry);
     }
 }

+ 30 - 0
onemini-hospital-empty/src/main/java/com/ywt/alipaympapi/web/controller/DevController.java

@@ -0,0 +1,30 @@
+package com.ywt.alipaympapi.web.controller;
+
+import com.ywt.model.PageVO;
+import com.ywt.model.Pagination;
+import com.ywt.model.ResponseVO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Walker
+ * Created on 2022/9/19
+ */
+@Slf4j
+@RestController("/dev")
+@RequestMapping({"/dev"})
+public class DevController {
+    @RequestMapping(value = {"/eptPageList"}, method = RequestMethod.POST)
+    public @ResponseBody ResponseVO<PageVO<String>> eptPageList() {
+        Pagination pagination = new Pagination(1, 1, 0);
+        PageVO<String> page = new PageVO<>(pagination, new ArrayList<>());
+        return ResponseVO.success(page);
+    }
+    @RequestMapping(value = {"/eptList"}, method = RequestMethod.POST)
+    public @ResponseBody ResponseVO<List<String>> eptList() {
+        return ResponseVO.success(new ArrayList<>());
+    }
+}

+ 54 - 13
onemini-hospital-sdk/src/main/java/com/ywt/alipaympapi/controller/InpatientController.java

@@ -1,6 +1,9 @@
 package com.ywt.alipaympapi.controller;
 
 import com.alibaba.fastjson.JSON;
+import com.ywt.core.exception.AppMessageException;
+import com.ywt.model.BaseResponse;
+import com.ywt.model.Code;
 import com.ywt.model.ResponseVO;
 import com.ywt.request.inpatient.DailyBillDetailsRequest;
 import com.ywt.request.inpatient.DailyBillRequest;
@@ -89,8 +92,14 @@ public class InpatientController {
      */
     @PostMapping("isvRequest.inpatient.list")
     public ResponseVO<List<InpatientListResponseData>> inpatientList(InpatientListRequest request) {
-        log.info("request:{}", JSON.toJSONString(request));
-        return ResponseVO.success(inpatientService.inpatientList(request));
+        try {
+            return ResponseVO.success(inpatientService.inpatientList(request));
+        } catch (AppMessageException e) {
+            return ResponseVO.fail(Code.RESP_CODE_PARAM_ERROR, e.getMessage());
+        } catch (Exception e) {
+            log.error("InpatientController#inpatient.list(request = {}):\n {}", request, e.getMessage(), e);
+            return ResponseVO.fail(Code.RESP_CODE_APP_EXCEPTION, e.getMessage());
+        }
     }
 
     /**
@@ -124,9 +133,18 @@ public class InpatientController {
      * @return
      */
     @PostMapping("isvRequest.home.dailyBill.list")
-    public ResponseVO<List<DailyBillResponseData>> dailyBillList(DailyBillRequest request) {
-        log.info("request:{}", JSON.toJSONString(request));
-        return ResponseVO.success(inpatientService.dailyBillList(request));
+    public ResponseVO<List<DailyBillResponseData>> dailyBillList(DailyBillRequest request) throws Exception {
+        try {
+            List<DailyBillResponseData> list = inpatientService.dailyBillList(request);
+            return ResponseVO.success(list);
+        } catch (AppMessageException e) {
+            return ResponseVO.fail(Code.RESP_CODE_PARAM_ERROR, e.getMessage());
+
+        } catch (Exception e) {
+            log.error("InpatientController#list(request = {}):\n {}", request, e.getMessage(), e);
+            return ResponseVO.fail(Code.RESP_CODE_APP_EXCEPTION, e.getMessage());
+
+        }
     }
 
     /**
@@ -136,9 +154,18 @@ public class InpatientController {
      * @return
      */
     @PostMapping("isvRequest.dailyBill.details")
-    public ResponseVO<DailyBillDetailsResponseData> dailyBillDetails(DailyBillDetailsRequest request) {
-        log.info("request:{}", JSON.toJSONString(request));
-        return ResponseVO.success(inpatientService.dailyBillDetail(request));
+    public ResponseVO<DailyBillDetailsResponseData> dailyBillDetails(DailyBillDetailsRequest request) throws Exception {
+        try {
+            return ResponseVO.success(inpatientService.dailyBillDetail(request));
+        } catch (AppMessageException e) {
+            return ResponseVO.fail(Code.RESP_CODE_PARAM_ERROR, e.getMessage());
+
+        } catch (Exception e) {
+            log.error("InpatientController#dailyBill.details(request = {}):\n {}", request, e.getMessage(), e);
+            return ResponseVO.fail(Code.RESP_CODE_APP_EXCEPTION, e.getMessage());
+
+        }
+
     }
 
     /**
@@ -173,8 +200,14 @@ public class InpatientController {
      */
     @PostMapping("isvRequest.deposit.list")
     public ResponseVO<List<DepositTradeListResponseData>> queryDepositTradeList(DepositTradeListRequest request) {
-        log.info("request:{}", JSON.toJSONString(request));
-        return ResponseVO.success(inpatientService.queryTradeList(request));
+        try {
+            return ResponseVO.success(inpatientService.queryTradeList(request));
+        } catch (AppMessageException e) {
+            return ResponseVO.fail(Code.RESP_CODE_PARAM_ERROR, e.getMessage());
+        } catch (Exception e) {
+            log.error("InpatientController#deposit.list(request = {}):\n {}", request, e.getMessage(), e);
+            return ResponseVO.fail(Code.RESP_CODE_APP_EXCEPTION, e.getMessage());
+        }
     }
 
     /**
@@ -184,9 +217,17 @@ public class InpatientController {
      * @return
      */
     @PostMapping("isvRequest.deposit.details")
-    public ResponseVO<DepositTradeDetailsResponseData> queryDepositTradeDetails(DepositTradeDetailsRequest request) {
-        log.info("request:{}", JSON.toJSONString(request));
-        return ResponseVO.success(inpatientService.queryTradeDetails(request));
+    public ResponseVO<DepositTradeDetailsResponseData> queryDepositTradeDetails(DepositTradeDetailsRequest request) throws Exception {
+       try{
+
+           return ResponseVO.success(inpatientService.queryTradeDetails(request));
+       }catch (AppMessageException e) {
+           return ResponseVO.fail(Code.RESP_CODE_PARAM_ERROR, e.getMessage());
+       } catch (Exception e) {
+           log.error("InpatientController#deposit.details\"(request = {}):\n {}", request, e.getMessage(), e);
+           return ResponseVO.fail(Code.RESP_CODE_APP_EXCEPTION, e.getMessage());
+       }
+
     }
 
     /**

+ 22 - 10
onemini-hospital-sdk/src/main/java/com/ywt/alipaympapi/controller/ReportController.java

@@ -1,5 +1,7 @@
 package com.ywt.alipaympapi.controller;
 
+import com.ywt.core.exception.AppMessageException;
+import com.ywt.model.Code;
 import com.ywt.model.PageVO;
 import com.ywt.model.ResponseVO;
 import com.ywt.request.report.QueryReportDetailRequest;
@@ -32,8 +34,16 @@ public class ReportController {
      * @return
      */
     @PostMapping("isvRequest.report.queryDetail")
-    public ResponseVO<QueryReportDetailResponseData> queryDetail(QueryReportDetailRequest request) {
-        return ResponseVO.success(reportService.queryReportDetail(request));
+    public ResponseVO<QueryReportDetailResponseData> queryDetail(QueryReportDetailRequest request) throws Exception {
+        try{
+            return ResponseVO.success(reportService.queryReportDetail(request));
+        } catch (AppMessageException e) {
+            return ResponseVO.fail(Code.RESP_CODE_PARAM_ERROR, e.getMessage());
+        } catch (Exception e) {
+            log.error("ReportController#queryDetail(request = {}):\n {}", request, e.getMessage(), e);
+            return ResponseVO.fail(Code.RESP_CODE_APP_EXCEPTION, e.getMessage());
+        }
+
     }
 
     /**
@@ -43,14 +53,16 @@ public class ReportController {
      * @return
      */
     @RequestMapping("isvRequest.report.queryList")
-    public ResponseVO<PageVO<QueryReportListResponseData>> queryList(QueryReportListRequest request) {
-
-        log.info("request is {}", request);
-
-        PageVO<QueryReportListResponseData> data = reportService.queryReportList(request);
-
-
-        return ResponseVO.success(data);
+    public ResponseVO<PageVO<QueryReportListResponseData>> queryList(QueryReportListRequest request) throws Exception {
+        try {
+            PageVO<QueryReportListResponseData> data = reportService.queryReportList(request);
+            return ResponseVO.success(data);
+        } catch (AppMessageException e) {
+            return ResponseVO.fail(Code.RESP_CODE_PARAM_ERROR, e.getMessage());
+        } catch (Exception e) {
+            log.error("ReportController#queryList(request = {}):\n {}", request, e.getMessage(), e);
+            return ResponseVO.fail(Code.RESP_CODE_APP_EXCEPTION, e.getMessage());
+        }
     }
 
 }

+ 6 - 5
onemini-hospital-sdk/src/main/java/com/ywt/alipaympapi/service/InpatientService.java

@@ -1,5 +1,6 @@
 package com.ywt.alipaympapi.service;
 
+import com.ywt.core.exception.AppMessageException;
 import com.ywt.request.inpatient.DailyBillDetailsRequest;
 import com.ywt.request.inpatient.DailyBillRequest;
 import com.ywt.request.inpatient.DepositTradeDetailsRequest;
@@ -75,7 +76,7 @@ public interface InpatientService {
      * @param request
      * @return
      */
-    List<InpatientListResponseData> inpatientList(InpatientListRequest request);
+    List<InpatientListResponseData> inpatientList(InpatientListRequest request) throws AppMessageException, Exception;
 
     /**
      * 删除住院记录
@@ -91,7 +92,7 @@ public interface InpatientService {
      * @param request
      * @return
      */
-    List<DailyBillResponseData> dailyBillList(DailyBillRequest request);
+    List<DailyBillResponseData> dailyBillList(DailyBillRequest request) throws Exception;
 
     /**
      * 日清详情
@@ -99,7 +100,7 @@ public interface InpatientService {
      * @param request
      * @return
      */
-    DailyBillDetailsResponseData dailyBillDetail(DailyBillDetailsRequest request);
+    DailyBillDetailsResponseData dailyBillDetail(DailyBillDetailsRequest request) throws AppMessageException, Exception;
 
     /**
      * 押金缴纳(创建支付宝订单,返回支付宝交易号)
@@ -123,7 +124,7 @@ public interface InpatientService {
      * @param request
      * @return
      */
-    List<DepositTradeListResponseData> queryTradeList(DepositTradeListRequest request);
+    List<DepositTradeListResponseData> queryTradeList(DepositTradeListRequest request) throws Exception;
 
     /**
      * 押金缴纳详情查询
@@ -131,7 +132,7 @@ public interface InpatientService {
      * @param request
      * @return
      */
-    DepositTradeDetailsResponseData queryTradeDetails(DepositTradeDetailsRequest request);
+    DepositTradeDetailsResponseData queryTradeDetails(DepositTradeDetailsRequest request) throws Exception;
 
     /**
      * 出院信息结算列表查询

+ 3 - 2
onemini-hospital-sdk/src/main/java/com/ywt/alipaympapi/service/IsvReportService.java

@@ -1,6 +1,7 @@
 package com.ywt.alipaympapi.service;
 
 
+import com.ywt.core.exception.AppMessageException;
 import com.ywt.model.PageVO;
 import com.ywt.request.report.QueryReportDetailRequest;
 import com.ywt.request.report.QueryReportListRequest;
@@ -18,7 +19,7 @@ public interface IsvReportService {
      * @param request
      * @return 查询结果
      **/
-    QueryReportDetailResponseData queryReportDetail(QueryReportDetailRequest request);
+    QueryReportDetailResponseData queryReportDetail(QueryReportDetailRequest request) throws AppMessageException, Exception;
 
     /**
      * 就诊卡列表查询
@@ -26,6 +27,6 @@ public interface IsvReportService {
      * @param request
      * @return 查询结果
      **/
-    PageVO<QueryReportListResponseData> queryReportList(QueryReportListRequest request);
+    PageVO<QueryReportListResponseData> queryReportList(QueryReportListRequest request) throws Exception;
 
 }

+ 2 - 0
onemini-hospital-sdk/src/main/java/com/ywt/request/inpatient/DailyBillDetailsRequest.java

@@ -20,6 +20,8 @@ public class DailyBillDetailsRequest implements IsvRequest<DailyBillDetailsRespo
 
     private String billDate;//日清账单日期,格式:yyyy-MM-dd HH:mm:ss,不传时返回最近一条数据
 
+    private String hisPatientId; //hisPatientId
+
     @Override
     public String serviceName() {
         return "isvRequest.dailyBill.details";

+ 0 - 1
onemini-hospital-sdk/src/main/java/com/ywt/request/inpatient/DailyBillRequest.java

@@ -17,7 +17,6 @@ public class DailyBillRequest implements IsvRequest<DailyBillResponseData>, IApp
     private String userId;//用户唯一id
 
     private String hospitalDistrictId;//院区id
-
     @Override
     public String serviceName() {
         return "isvRequest.home.dailyBill.list";

+ 4 - 0
onemini-hospital-sdk/src/main/java/com/ywt/request/inpatient/DepositTradeDetailsRequest.java

@@ -18,6 +18,10 @@ public class DepositTradeDetailsRequest implements IsvRequest<DepositTradeDetail
 
     private String depositId;//押金缴费id
 
+    private String hisPatientId; //hisPatientId
+
+    private String receiptNo; //收据号码
+
     @Override
     public String serviceName() {
         return "isvRequest.deposit.details";

+ 2 - 0
onemini-hospital-sdk/src/main/java/com/ywt/request/report/QueryReportDetailRequest.java

@@ -19,6 +19,8 @@ public class QueryReportDetailRequest implements IsvRequest<QueryReportDetailRes
     private String appId;//医院小程序的AppId
     private String userId;//用户唯一id
     private String recordId;//检查流水号
+    private String type;//报告类型
+    private String hisPatientId;
 
     @Override
     public String serviceName() {

+ 1 - 0
onemini-hospital-sdk/src/main/java/com/ywt/request/report/QueryReportListRequest.java

@@ -24,6 +24,7 @@ public class QueryReportListRequest implements IsvPageRequest<QueryReportListRes
     private String type;//报告类型
     private int pageIndex;//页码
     private int pageSize;//页条数
+    private String hisPatientId;
 
     @Override
     public String serviceName() {

+ 1 - 0
onemini-hospital-sdk/src/main/java/com/ywt/response/inpatient/DailyBillDetailsResponseData.java

@@ -34,4 +34,5 @@ public class DailyBillDetailsResponseData implements IsvResponseData {
 
     private List<Item> payItemList;
 
+
 }

+ 1 - 0
onemini-hospital-sdk/src/main/java/com/ywt/response/inpatient/DailyBillResponseData.java

@@ -27,4 +27,5 @@ public class DailyBillResponseData implements IsvResponseData {
 
     private String depositBalance; //押金余额
 
+
 }

+ 3 - 1
onemini-hospital-sdk/src/main/java/com/ywt/response/inpatient/DepositTradeListResponseData.java

@@ -9,7 +9,7 @@ import lombok.Data;
 @Data
 public class DepositTradeListResponseData implements IsvResponseData {
 
-    private String depositId;//押金缴费id
+    private String depositId;//押金缴费id 与 receiptNo 匹配
 
     private String inpatientName;//住院人姓名
 
@@ -24,4 +24,6 @@ public class DepositTradeListResponseData implements IsvResponseData {
     private String tradeNo;//支付宝交易号
 
     private String status;//订单状态,WAIT_BUYER_PAY(交易创建,等待买家付款)、TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、TRADE_SUCCESS(交易支付成功)、TRADE_FINISHED(交易结束,不可退款
+
+    private String admNo;
 }

+ 4 - 0
onemini-hospital-sdk/src/main/java/com/ywt/response/inpatient/InpatientListResponseData.java

@@ -37,4 +37,8 @@ public class InpatientListResponseData implements IsvResponseData {
 
     private String inpatientNo; //住院号
 
+    private String admNo;
+
+
+
 }

+ 1 - 0
onemini-hospital-sdk/src/main/java/com/ywt/response/report/ReportItem.java

@@ -8,4 +8,5 @@ public class ReportItem {
     private String txtVal;             //结果
     private String pnFlag;             //正常标志
     private String reference;             //参考值
+    private String unit;              //单位
 }