From d974cb255c2b1e4c1e7b940522b17dd7c478c45c Mon Sep 17 00:00:00 2001 From: wangsq Date: Wed, 17 Jun 2026 00:16:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=A4=E9=80=9A=E9=93=B6=E8=A1=8C=E7=94=B5?= =?UTF-8?q?=E5=AD=90=E5=81=A5=E5=BA=B7=E5=8D=A1=E6=95=B0=E6=8D=AE=E6=9C=AA?= =?UTF-8?q?=E4=B8=8A=E6=8A=A5=EF=BC=8C=E5=9B=A0=E7=BC=BA=E5=B0=91openid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/ynxbd/common/TestA.java | 29 ++++++++++--------- .../ynxbd/common/action/pay/BcmPayAction.java | 4 ++- .../com/ynxbd/common/dao/PayResultDao.java | 4 +-- .../common/service/HealthUploadService.java | 13 +++++++-- .../ynxbd/common/service/RecipeService.java | 22 +++++++++++++- .../com/ynxbd/common/service/RegService.java | 19 ++++++++---- .../ynxbd/wx/config/MessagePushConfig.java | 10 +++---- 7 files changed, 69 insertions(+), 32 deletions(-) diff --git a/src/main/java/com/ynxbd/common/TestA.java b/src/main/java/com/ynxbd/common/TestA.java index 84f257c..6908ff0 100644 --- a/src/main/java/com/ynxbd/common/TestA.java +++ b/src/main/java/com/ynxbd/common/TestA.java @@ -1,6 +1,7 @@ package com.ynxbd.common; import com.ynxbd.common.bean.Patient; +import com.ynxbd.common.bean.enums.MerchantEnum; import com.ynxbd.common.helper.common.HMACHelper; import com.ynxbd.common.result.JsonResult; import com.ynxbd.common.result.JsonResultEnum; @@ -37,20 +38,20 @@ public class TestA { public static void main(String[] args) { - String respXML = "\n" + - "\t1002\n" + - "\t0\n" + - "\t成功\n" + - "\t932606\n" + - "\t300349719\n" + - "\t137087\n" + - ""; - JsonResult result = JsonResult.xmlToBean(respXML, JsonResultEnum.SYS_HIS); - if (result == null) { - return; - } - Patient patient = result.dataMapToBean(Patient.class); - System.out.println(patient); +// String respXML = "\n" + +// "\t1002\n" + +// "\t0\n" + +// "\t成功\n" + +// "\t932606\n" + +// "\t300349719\n" + +// "\t137087\n" + +// ""; +// JsonResult result = JsonResult.xmlToBean(respXML, JsonResultEnum.SYS_HIS); +// if (result == null) { +// return; +// } +// Patient patient = result.dataMapToBean(Patient.class); +// System.out.println(patient); } diff --git a/src/main/java/com/ynxbd/common/action/pay/BcmPayAction.java b/src/main/java/com/ynxbd/common/action/pay/BcmPayAction.java index af266a3..8bc531a 100644 --- a/src/main/java/com/ynxbd/common/action/pay/BcmPayAction.java +++ b/src/main/java/com/ynxbd/common/action/pay/BcmPayAction.java @@ -6,6 +6,7 @@ import com.ynxbd.common.action.base.BaseAction; import com.ynxbd.common.bean.enums.MerchantEnum; import com.ynxbd.common.bean.pay.PayResult; import com.ynxbd.common.helper.common.DateHelper; +import com.ynxbd.common.helper.common.JsonHelper; import com.ynxbd.common.result.Result; import com.ynxbd.common.result.ServiceException; import com.ynxbd.common.service.RecipeService; @@ -47,16 +48,17 @@ public class BcmPayAction extends BaseAction { String payDate = DateHelper.getCurDate(); String payTime = DateHelper.getCurTime(); String bankMerchantNo = notifyInfo.getBankMerchantNo(); - log.info("【交行】[{}] 收到通知 outTradeNo={}, bankTransNo={}, bankMerchantNo={}", notifyType, outTradeNo, bankTransNo, bankMerchantNo); switch (PEnum.toEnum(notifyType)) { case RECIPE: + openid = new RecipeService().queryOpenIdByOutTradeNo(outTradeNo); new RecipeService().recipeListPay(MerchantEnum.BCM, totalFee.toString(), openid, outTradeNo, bankTransNo, bankMerchantNo, payDate, payTime, payInfo); break; case REG: // 挂号 try { + openid = new RegService().queryOpenIdByOutTradeNo(outTradeNo); new RegService().regPaidNotify(MerchantEnum.BCM, totalFee, openid, bankTransNo, outTradeNo, bankMerchantNo, payDate, payTime, payInfo, new Date()); } catch (ServiceException e) { log.info("【交行]挂号通知错误 outTradeNo={}, bankTransNo={}, message={}", outTradeNo, bankTransNo, e.getMessage()); diff --git a/src/main/java/com/ynxbd/common/dao/PayResultDao.java b/src/main/java/com/ynxbd/common/dao/PayResultDao.java index 08da1a5..dc06c39 100644 --- a/src/main/java/com/ynxbd/common/dao/PayResultDao.java +++ b/src/main/java/com/ynxbd/common/dao/PayResultDao.java @@ -20,11 +20,11 @@ public class PayResultDao { public boolean queryOrderByOutTradeNoAndOpenid(String outTradeNo, String openid) { String sql = "select id from pay_result where outTradeNo=? and openid=?"; - return DataBase.select(sql, PayResult.class, ps -> { + return !DataBase.select(sql, PayResult.class, ps -> { ps.setString(1, outTradeNo); ps.setString(2, openid); - }).size() > 0; + }).isEmpty(); } diff --git a/src/main/java/com/ynxbd/common/service/HealthUploadService.java b/src/main/java/com/ynxbd/common/service/HealthUploadService.java index 0c6380d..97211f9 100644 --- a/src/main/java/com/ynxbd/common/service/HealthUploadService.java +++ b/src/main/java/com/ynxbd/common/service/HealthUploadService.java @@ -2,6 +2,7 @@ package com.ynxbd.common.service; import com.ynxbd.common.bean.Patient; import com.ynxbd.common.bean.enums.HealthCardEnum; +import com.ynxbd.common.bean.enums.MerchantEnum; import com.ynxbd.common.config.HealthCardConfig; import com.ynxbd.common.dao.PatientDao; import com.ynxbd.common.helper.HealthCardHelper; @@ -22,16 +23,19 @@ public class HealthUploadService { * @param deptName 科室名 * @param regDate 挂号日期 */ - public void regPayReportHISData(String openid, String patientId, String deptName, String regDate) { + public void regPayReportHISData(MerchantEnum merchantEnum, String openid, String patientId, String deptName, String regDate) { try { if (!HealthCardConfig.IS_UPLOAD_DATA) { // 禁止数据上传 return; } - if (!HealthCardConfig.isEnable()) { // 判断是否禁用电子健康卡 return; } + if (!MerchantEnum.WX.equals(merchantEnum) && !MerchantEnum.BCM.equals(merchantEnum)) { + return; + } + if (deptName == null || openid == null || patientId == null || regDate == null) { return; } @@ -63,7 +67,7 @@ public class HealthUploadService { * @param openid openid * @param patientId patientId */ - public void rxReportHISData(String openid, String patientId) { + public void rxReportHISData(MerchantEnum merchantEnum, String openid, String patientId) { try { if (!HealthCardConfig.IS_UPLOAD_DATA) { // 禁止数据上传 return; @@ -71,6 +75,9 @@ public class HealthUploadService { if (!HealthCardConfig.isEnable()) { // 判断是否禁用电子健康卡 return; } + if (!MerchantEnum.WX.equals(merchantEnum) && !MerchantEnum.BCM.equals(merchantEnum)) { // 商户类型判断 + return; + } if (ObjectUtils.isEmpty(openid) || ObjectUtils.isEmpty(patientId)) { return; diff --git a/src/main/java/com/ynxbd/common/service/RecipeService.java b/src/main/java/com/ynxbd/common/service/RecipeService.java index c9954d4..00a0c24 100644 --- a/src/main/java/com/ynxbd/common/service/RecipeService.java +++ b/src/main/java/com/ynxbd/common/service/RecipeService.java @@ -9,6 +9,7 @@ import com.ynxbd.common.bean.StandardPrice; import com.ynxbd.common.bean.enums.MerchantEnum; import com.ynxbd.common.bean.pay.Order; import com.ynxbd.common.bean.pay.Recipe; +import com.ynxbd.common.bean.pay.Register; import com.ynxbd.common.dao.RecipeDao; import com.ynxbd.common.dao.RefundDao; import com.ynxbd.common.dao.SelfHelpDao; @@ -375,7 +376,7 @@ public class RecipeService { TZReserveConfig.reserveRun(patientId); // 天助医技预约 - new HealthUploadService().rxReportHISData(openid, patientId); + new HealthUploadService().rxReportHISData(merchantEnum, openid, patientId); return true; } @@ -1058,6 +1059,7 @@ public class RecipeService { return new RecipeDao().insert(recipe); } + // 查询唯一订单-不支持查询多张发票的处方 public Order queryRxByOrderNo(String outTradeNo, String tradeNo) { if (!ObjectUtils.isEmpty(outTradeNo)) { return new RecipeDao().selectOneByOutTradeNo(outTradeNo); @@ -1067,4 +1069,22 @@ public class RecipeService { } return new RecipeDao().selectByTradeNo(tradeNo); } + + // 查询处方订单集 + public List queryRxListByOrderNo(String outTradeNo) { + if (ObjectUtils.isEmpty(outTradeNo)) { + return new ArrayList<>(); + } + return new RecipeDao().selectListByOutTradeNo(outTradeNo); + } + + // 查询订单openid + public String queryOpenIdByOutTradeNo(String outTradeNo) { + List rxList = queryRxListByOrderNo(outTradeNo); + if (rxList.isEmpty()) { + return null; + } + Recipe order = rxList.get(0); + return order.getOpenid(); + } } diff --git a/src/main/java/com/ynxbd/common/service/RegService.java b/src/main/java/com/ynxbd/common/service/RegService.java index 5d9c063..6553882 100644 --- a/src/main/java/com/ynxbd/common/service/RegService.java +++ b/src/main/java/com/ynxbd/common/service/RegService.java @@ -224,11 +224,7 @@ public class RegService { MessagePushConfig.regAI(merchantEnum, reg); - // 挂号导航推送 - MessagePushConfig.regNavigatePush(merchantEnum, reg); - - // 电子健康卡上报数据 - new HealthUploadService().regPayReportHISData(openid, patientId, reg.getDeptName(), reg.getRegDate()); + MessagePushConfig.regNavigatePush(merchantEnum, reg); // 挂号导航推送 } if (MerchantEnum.ALI.equals(merchantEnum)) { @@ -239,6 +235,10 @@ public class RegService { AliMessageHelper.hospitalOrder(openid, title, AliMsgEnum.MERCHANT_PREORDER_SUCCESS, reg.getUpdateTime(), true, totalFee, outTradeNo, reg.getRegDate(), reg.getBegTime(), reg.getDeptCode(), reg.getDeptName(), reg.getDoctName(), AliHelper.getLink(link, null)); } + + // 电子健康卡上报数据 + new HealthUploadService().regPayReportHISData(merchantEnum, openid, patientId, reg.getDeptName(), reg.getRegDate()); + return true; } @@ -1247,4 +1247,13 @@ public class RegService { return new HisRegisterDao().queryHisRegSourceState(deptCode, subDeptCode, isTimeInterval, timeInterval); } } + + // 查询订单openid + public String queryOpenIdByOutTradeNo(String outTradeNo) { + Order order = queryRegByOrderNo(outTradeNo, null); + if (order == null) { + return null; + } + return order.getOpenid(); + } } diff --git a/src/main/java/com/ynxbd/wx/config/MessagePushConfig.java b/src/main/java/com/ynxbd/wx/config/MessagePushConfig.java index 8f44880..ed848f0 100644 --- a/src/main/java/com/ynxbd/wx/config/MessagePushConfig.java +++ b/src/main/java/com/ynxbd/wx/config/MessagePushConfig.java @@ -89,8 +89,7 @@ public class MessagePushConfig { */ public static void regNavigatePush(MerchantEnum merchantEnum, Register reg) { try { - if (!merchantEnum.equals(MerchantEnum.WX) - || !REG_NAVIGATE_IS_ENABLE || ObjectUtils.isEmpty(REG_NAVIGATE_URL)) { + if (!merchantEnum.equals(MerchantEnum.WX) || !REG_NAVIGATE_IS_ENABLE || ObjectUtils.isEmpty(REG_NAVIGATE_URL)) { return; } @@ -186,8 +185,7 @@ public class MessagePushConfig { */ public static void regAI(MerchantEnum merchantEnum, Register reg) { try { - if (!merchantEnum.equals(MerchantEnum.WX) - || !REG_AI_IS_ENABLE || reg == null || ObjectUtils.isEmpty(REG_AI_URL)) { + if (!merchantEnum.equals(MerchantEnum.WX) || !REG_AI_IS_ENABLE || reg == null || ObjectUtils.isEmpty(REG_AI_URL)) { return; } @@ -199,8 +197,8 @@ public class MessagePushConfig { } String url = PWEHelper.getH5PWEUrl(reg.getOutTradeNo(), reg.getOpenid()); - if (url == null || "".equals(url)) { - log.warn("[推送][推送]AI智能问诊推送通知失败,问诊获取参数为空 outTradeNo-{}", reg.getOutTradeNo()); + if (ObjectUtils.isEmpty(url)) { + log.warn("[推送][推送]AI智能问诊推送通知失败,问诊获取参数为空 outTradeNo={}", reg.getOutTradeNo()); return; }