فهرست منبع

feature: 抽取获取诊疗卡列表的公共 rpc 方法

Walker 2 سال پیش
والد
کامیت
d7cee9aeaf
1فایلهای تغییر یافته به همراه31 افزوده شده و 42 حذف شده
  1. 31 42
      onemini-hospital-empty/src/main/java/com/ywt/alipaympapi/service/impl/IsvMedicCardServiceImpl.java

+ 31 - 42
onemini-hospital-empty/src/main/java/com/ywt/alipaympapi/service/impl/IsvMedicCardServiceImpl.java

@@ -44,6 +44,11 @@ public class IsvMedicCardServiceImpl implements IsvMedicCardService {
     @Autowired
     private MessageSrv messageSrv;
 
+    public static final int CARD_TYPE_NORMAL = 0; // 普通卡
+    public static final int CARD_TYPE_MED_INSU = 1; // 医保卡
+    public static final String CARD_TYPE_STR_NORMAL = "0"; // 普通卡
+    public static final String CARD_TYPE_STR_MED_INSU = "1"; // 医保卡
+
     @Override
     public CreateOrBindCardResponseData createOrBindMedicCard(CreateOrBindCardRequest request) throws Exception {
         //用户唯一id
@@ -160,10 +165,7 @@ public class IsvMedicCardServiceImpl implements IsvMedicCardService {
 
     @Override
     public UpdateCardResponseData updateMedicCard(UpdateCardRequest request) throws Exception {
-        if (1 == 1) {
-            throw new AppMessageException("尚无修改诊疗卡功能");
-        }
-        return null;
+        throw new AppMessageException("暂不支持修改诊疗卡功能");
     }
 
     // 就诊卡详情
@@ -174,14 +176,7 @@ public class IsvMedicCardServiceImpl implements IsvMedicCardService {
         CheckUtil.ensureNotEmpty(cardNum, "诊疗卡号不能为空");
         int hospitalId = BizUtil.getCurrentHospitalId();
         int userId = ContextHelper.getCurrentUserIdWrapped();
-        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());
-        List<MedicalCard> list = getMedicalCardListResponse.getMedicalCardsList().stream()
+        List<MedicalCard> list = getUserMedCardList(userId, hospitalId).stream()
                 .filter(c -> Checker.getStringValue(c.getCardNo()).equals(cardNum))
                 .collect(Collectors.toList());
         if (list.isEmpty()) return null;
@@ -189,8 +184,7 @@ public class IsvMedicCardServiceImpl implements IsvMedicCardService {
         double balance = medicalCard.getBalance() / 100d;
         QuerySingleCardResponseData item = new QuerySingleCardResponseData();
         item.setCardNum(medicalCard.getCardNo());//就诊卡卡号/医保卡卡号
-        String cardType = medicalCard.getCardType();
-        item.setType("0");// 标记查询卡类型
+        item.setType(CARD_TYPE_STR_NORMAL);// 标记查询卡类型
         item.setName(medicalCard.getPatientName());//姓名
         item.setSex(SexEnum.getSexDisplayName(medicalCard.getSex()));//性别
         item.setBirthDay(medicalCard.getBirthday());//生日
@@ -208,14 +202,7 @@ public class IsvMedicCardServiceImpl implements IsvMedicCardService {
     public QueryDefaultCardResponseData queryDefaultMedicCard(QueryDefaultCardRequest request) throws Exception {
         int hospitalId = BizUtil.getCurrentHospitalId();
         int userId = ContextHelper.getCurrentUserIdWrapped();
-        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());
-        List<MedicalCard> list = getMedicalCardListResponse.getMedicalCardsList().stream()
+        List<MedicalCard> list = getUserMedCardList(userId, hospitalId).stream()
                 .sorted(Comparator.comparing(MedicalCard::getLastChosenTime).reversed())
                 .collect(Collectors.toList());
         if (list.isEmpty()) return null;
@@ -223,7 +210,7 @@ public class IsvMedicCardServiceImpl implements IsvMedicCardService {
         double balance = medicalCard.getBalance() / 100d;
         QueryDefaultCardResponseData item = new QueryDefaultCardResponseData();
         item.setCardNum(medicalCard.getCardNo());//就诊卡卡号/医保卡卡号
-        item.setType("0");// 标记查询卡类型,默认普通卡
+        item.setType(CARD_TYPE_STR_NORMAL);// 标记查询卡类型,默认普通卡
         item.setName(medicalCard.getPatientName());//姓名
         item.setSex(SexEnum.getSexDisplayName(medicalCard.getSex()));//性别
         item.setBirthDay(medicalCard.getBirthday());//生日
@@ -242,23 +229,15 @@ public class IsvMedicCardServiceImpl implements IsvMedicCardService {
     public PageVO<QueryListCardResponseData> queryListMedicCard(QueryListCardRequest request) throws Exception {
         int hospitalId = BizUtil.getCurrentHospitalId();
         int userId = ContextHelper.getCurrentUserIdWrapped();
-        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());
         int total;
         List<QueryListCardResponseData> lst = new LinkedList<>();
-        List<MedicalCard> medicalCards = getMedicalCardListResponse.getMedicalCardsList();
+        List<MedicalCard> medicalCards = getUserMedCardList(userId, hospitalId);
         total = medicalCards.size();
         for (MedicalCard medicalCard : medicalCards) {
             double balance = medicalCard.getBalance() / 100d;
             QueryListCardResponseData item = new QueryListCardResponseData();
             item.setCardNum(medicalCard.getCardNo());//就诊卡卡号/医保卡卡号
-            String cardType = medicalCard.getCardType();
-            item.setType(1);//标记查询卡类型
+            item.setType(CARD_TYPE_NORMAL);//标记查询卡类型
             item.setName(medicalCard.getPatientName());//姓名
             item.setSex(SexEnum.getSexDisplayName(medicalCard.getSex()));//性别
             item.setBirthDay(medicalCard.getBirthday());//生日
@@ -349,14 +328,7 @@ public class IsvMedicCardServiceImpl implements IsvMedicCardService {
     public List<QueryPatientListResponse> queryPatientList(QueryPatientListRequest request) throws Exception {
         int hospitalId = BizUtil.getCurrentHospitalId();
         int userId = ContextHelper.getCurrentUserIdWrapped();
-        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().stream()
+        return getUserMedCardList(userId, hospitalId).stream()
                 .map(c -> {
                     QueryPatientListResponse r = new QueryPatientListResponse();
                     List<MedicCard> medicCards = new ArrayList<>();
@@ -372,7 +344,7 @@ public class IsvMedicCardServiceImpl implements IsvMedicCardService {
                     r.setBindCardNum(c.getCardNo());
                     MedicCard card = new MedicCard();
                     card.setCardNum(c.getCardNo());
-                    card.setType(0);
+                    card.setType(CARD_TYPE_NORMAL);
                     card.setBalance(String.valueOf(c.getBalance() / 100d));
                     medicCards.add(card);
                     r.setMedicCards(medicCards);
@@ -398,6 +370,7 @@ public class IsvMedicCardServiceImpl implements IsvMedicCardService {
                 log.error("IsvMedicCardServiceImpl#getAgeFromMedicalCard(birthday = {}): 无法获取年龄 {}", birthday, e.getMessage(), e);
             }
         }
+        // 不返回年龄为 "-1"
         if (age < 0) {
             return "";
         }
@@ -425,8 +398,24 @@ public class IsvMedicCardServiceImpl implements IsvMedicCardService {
         return null;
     }
 
+    /**
+     * 根据 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();
+    }
+
+    // 查看就诊人详情
     @Override
     public QueryPatientDetailResponse querySinglePatient(QueryPatientDetailRequest request) throws Exception {
+        String id = request.getId(); // 对应 medicalCard 的 id
         return null;
     }