瀏覽代碼

修复读电子凭证解析数据的问题。

lighter 3 年之前
父節點
當前提交
aa54cb2541

+ 1 - 1
src/main/java/thyyxxk/webserver/entity/medicalinsurance/inpatient/RdCrdRslt.java

@@ -33,7 +33,7 @@ public class RdCrdRslt {
     /**
      * 读卡输出(身份证、社保卡返回普通字符串,二维码返回JSON字符串)
      * */
-    private String data;
+    private Object data;
 
     /**
      * 读身份证、社保卡控件签名

+ 1 - 1
src/main/java/thyyxxk/webserver/entity/medicalinsurance/inpatient/ZyPatientInfo.java

@@ -53,7 +53,7 @@ public class ZyPatientInfo {
 
     private String mdtrtCertType;
     private String mdtrtCertNo;
-    private String readCardResult;
+    private Object readCardResult;
     private String readCardBizType;
 
     private Integer feeSize;

+ 5 - 7
src/main/java/thyyxxk/webserver/service/medicalinsurance/SiZyService.java

@@ -24,6 +24,7 @@ import thyyxxk.webserver.utils.*;
 
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @description: 住院医保交易
@@ -96,21 +97,18 @@ public class SiZyService {
             MdtrtCertType mdtrtCertType = MdtrtCertType.getByLabel(p.getMdtrtCertType());
             admMdtrtinfo.setMdtrtCertType(mdtrtCertType.getCode());
             if (mdtrtCertType == MdtrtCertType.SOCIAL_SECURITY_CARD) {
-                String[] out = p.getReadCardResult().split("\\|");
+                String[] out = p.getReadCardResult().toString().split("\\|");
                 if (!p.getName().trim().equals(out[4].trim())) {
-                    revokeDischarge(p);
                     return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "社保卡姓名与HIS姓名不一致,请确认是否人证相符。");
                 }
                 admMdtrtinfo.setMdtrtCertNo(out[2]);
                 admMdtrtinfo.setCardSn(out[3]);
             } else if (mdtrtCertType == MdtrtCertType.MEDICAL_INSURANCE_ELECTRONIC_VOUCHER) {
-                JSONObject qrinfo = JSONObject.parseObject(p.getReadCardResult());
+                JSONObject qrinfo = new JSONObject(FilterUtil.cast(p.getReadCardResult()));
                 if (!p.getName().trim().equals(qrinfo.getString("userName").trim())) {
-                    revokeDischarge(p);
                     return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "电子医保凭证姓名与HIS姓名不一致,请确认是否人证相符。");
                 }
                 if (!p.getSocialNo().trim().equals(qrinfo.getString("idNo").trim())) {
-                    revokeDischarge(p);
                     return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "电子医保凭证身份证与HIS身份证不一致,请确认是否人证相符。");
                 }
                 admMdtrtinfo.setMdtrtCertNo(qrinfo.getString("ecToken"));
@@ -404,7 +402,7 @@ public class SiZyService {
             MdtrtCertType mdtrtCertType = MdtrtCertType.getByLabel(p.getMdtrtCertType());
             preSetlmt.setMdtrtCertType(mdtrtCertType.getCode());
             if (mdtrtCertType == MdtrtCertType.SOCIAL_SECURITY_CARD) {
-                String[] out = p.getReadCardResult().split("\\|");
+                String[] out = p.getReadCardResult().toString().split("\\|");
                 if (!p.getName().trim().equals(out[4].trim())) {
                     revokeDischarge(p);
                     return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "社保卡姓名与HIS姓名不一致,请确认是否人证相符。");
@@ -412,7 +410,7 @@ public class SiZyService {
                 preSetlmt.setMdtrtCertNo(out[2]);
                 preSetlmt.setCardSn(out[3]);
             } else if (mdtrtCertType == MdtrtCertType.MEDICAL_INSURANCE_ELECTRONIC_VOUCHER) {
-                JSONObject qrinfo = JSONObject.parseObject(p.getReadCardResult());
+                JSONObject qrinfo = JSONObject.parseObject(p.getReadCardResult().toString());
                 if (!p.getName().trim().equals(qrinfo.getString("userName").trim())) {
                     revokeDischarge(p);
                     return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "电子医保凭证姓名与HIS姓名不一致,请确认是否人证相符。");