交通银行电子健康卡数据未上报,因缺少openid

debug
王绍全 10 hours ago
parent 33aaf52d1f
commit d974cb255c
  1. 29
      src/main/java/com/ynxbd/common/TestA.java
  2. 4
      src/main/java/com/ynxbd/common/action/pay/BcmPayAction.java
  3. 4
      src/main/java/com/ynxbd/common/dao/PayResultDao.java
  4. 13
      src/main/java/com/ynxbd/common/service/HealthUploadService.java
  5. 22
      src/main/java/com/ynxbd/common/service/RecipeService.java
  6. 19
      src/main/java/com/ynxbd/common/service/RegService.java
  7. 10
      src/main/java/com/ynxbd/wx/config/MessagePushConfig.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 = "<Response>\n" +
"\t<TransactionCode>1002</TransactionCode>\n" +
"\t<ResponseCode>0</ResponseCode>\n" +
"\t<ResponseMessage>成功</ResponseMessage>\n" +
"\t<PatientID>932606</PatientID>\n" +
"\t<Empi_Id>300349719</Empi_Id>\n" +
"\t<HISTrasNo>137087</HISTrasNo>\n" +
"</Response>";
JsonResult result = JsonResult.xmlToBean(respXML, JsonResultEnum.SYS_HIS);
if (result == null) {
return;
}
Patient patient = result.dataMapToBean(Patient.class);
System.out.println(patient);
// String respXML = "<Response>\n" +
// "\t<TransactionCode>1002</TransactionCode>\n" +
// "\t<ResponseCode>0</ResponseCode>\n" +
// "\t<ResponseMessage>成功</ResponseMessage>\n" +
// "\t<PatientID>932606</PatientID>\n" +
// "\t<Empi_Id>300349719</Empi_Id>\n" +
// "\t<HISTrasNo>137087</HISTrasNo>\n" +
// "</Response>";
// JsonResult result = JsonResult.xmlToBean(respXML, JsonResultEnum.SYS_HIS);
// if (result == null) {
// return;
// }
// Patient patient = result.dataMapToBean(Patient.class);
// System.out.println(patient);
}

@ -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());

@ -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();
}

@ -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;

@ -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<Recipe> queryRxListByOrderNo(String outTradeNo) {
if (ObjectUtils.isEmpty(outTradeNo)) {
return new ArrayList<>();
}
return new RecipeDao().selectListByOutTradeNo(outTradeNo);
}
// 查询订单openid
public String queryOpenIdByOutTradeNo(String outTradeNo) {
List<Recipe> rxList = queryRxListByOrderNo(outTradeNo);
if (rxList.isEmpty()) {
return null;
}
Recipe order = rxList.get(0);
return order.getOpenid();
}
}

@ -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();
}
}

@ -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;
}

Loading…
Cancel
Save