소스 검색

fix: 修复年龄解析报错问题

Walker 1 년 전
부모
커밋
690d4c7b3e
1개의 변경된 파일14개의 추가작업 그리고 2개의 파일을 삭제
  1. 14 2
      onemini-hospital-empty/src/main/java/com/ywt/alipaympapi/service/impl/InpatientServiceImpl.java

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

@@ -1,5 +1,6 @@
 package com.ywt.alipaympapi.service.impl;
 
+import com.google.protobuf.TextFormat;
 import com.ywt.alipaympapi.core.utils.*;
 import com.ywt.alipaympapi.models.BaseResponse;
 import com.ywt.alipaympapi.models.enums.LastChoiceEnum;
@@ -119,7 +120,7 @@ public class InpatientServiceImpl implements InpatientService {
                 data.setInpatientId(medicalCard.getPatientId());
                 data.setInpatientName(BizUtil.maskedName(medicalCard.getPatientName()));
                 data.setSex(medicalCard.getSex() == 1 ? "男" : "女");
-                data.setInpatientAge(Integer.parseInt(getAgeFromMedicalCard(medicalCard)));
+                data.setInpatientAge(getAgeIntFromMedicalCard(medicalCard));
                 InpatientVo vo = getInpatientVo(userId, medicalCard.getPatientId());
                 data.setAdmNo(Checker.getStringValue(vo.getAdmNo()));
                 list.add(data);
@@ -475,6 +476,17 @@ public class InpatientServiceImpl implements InpatientService {
         return null;
     }
 
+    private int getAgeIntFromMedicalCard(MedicalCard card) {
+        try {
+            String ageStr = getAgeFromMedicalCard(card);
+            return ageStr.isEmpty() ? 0 : Integer.parseInt(ageStr);
+        } catch (NumberFormatException e) {
+            log.error("InpatientServiceImpl#getAgeIntFromMedicalCard(card={} ):\n {}", TextFormat.printToUnicodeString(card),
+                    e.getMessage());
+            return 0;
+        }
+    }
+
     private String getAgeFromMedicalCard(MedicalCard card) {
         int age = -1;
         String idNo = card.getIdNo();
@@ -529,7 +541,7 @@ public class InpatientServiceImpl implements InpatientService {
                     data.setInpatientName(BizUtil.maskedName(medicalCard.getPatientName()));
                     data.setSex(medicalCard.getSex() == 1 ? "男" : "女");
                     Date date = DateUtil.stringToDate(medicalCard.getBirthday(), DateUtil.DADE_FROMAT_YMD);
-                    data.setInpatientAge(Integer.parseInt(getAgeFromMedicalCard(medicalCard)));
+                    data.setInpatientAge(getAgeIntFromMedicalCard(medicalCard));
                     InpatientVo vo = getInpatientVo(userId, medicalCard.getPatientId());
                     return data;
                 }