diff --git a/src/main/java/com/ynxbd/common/dao/RecipeDao.java b/src/main/java/com/ynxbd/common/dao/RecipeDao.java index 0911832..1c6cf43 100644 --- a/src/main/java/com/ynxbd/common/dao/RecipeDao.java +++ b/src/main/java/com/ynxbd/common/dao/RecipeDao.java @@ -350,6 +350,16 @@ public class RecipeDao { } + public boolean updateHisPaidByBankTransNo(String bankTransNo, String hisTransNo, String invoiceTransNo) { + String sql = "update pay set HISTransNo=?, InvoiceTransNo=?, PayStatus=0, HisStatus=0 where BankTransNo= ?"; + return DataBase.update(sql, ps -> { + ps.setString(1, hisTransNo); + ps.setString(2, invoiceTransNo); + ps.setString(3, bankTransNo); + }) > 0; + } + + // /** // * 记录His缴费失败的错误信息 // * diff --git a/src/main/java/com/ynxbd/common/dao/his/HisRecipeDao.java b/src/main/java/com/ynxbd/common/dao/his/HisRecipeDao.java index 34cce48..34ae297 100644 --- a/src/main/java/com/ynxbd/common/dao/his/HisRecipeDao.java +++ b/src/main/java/com/ynxbd/common/dao/his/HisRecipeDao.java @@ -174,7 +174,7 @@ public class HisRecipeDao { * @param transId 银行流水号 * @return bean */ - public static JsonResult payInvoice(String openid, String patientId, String treatNum, List recipeIds, String payMoney, + public static JsonResult payInvoice(String openid, String patientId, String treatNum, List recipeIds, String payMoney,String totalFee, String payDate, String payTime, String tradeNo, String payDeviceId, String transId, MerchantEnum merchantEnum, String feeId, String feeInfo) { String fpOrderId = (tradeNo != null && tradeNo.indexOf("ORD") == 0 ? tradeNo : transId); @@ -220,6 +220,7 @@ public class HisRecipeDao { params.put("TJBH",treatNum.split("-")[1]); params.put("GroupFlag","1"); params.remove("Recipe"); + params.put("PayMoney", totalFee); //如果是体检支付就传入总金额 } return HisHelper.getJsonResult(HisEnum.AP_Pay_Invoice, params,merchantEnum); } diff --git a/src/main/java/com/ynxbd/common/service/RecipeService.java b/src/main/java/com/ynxbd/common/service/RecipeService.java index 3fcbfa8..0153429 100644 --- a/src/main/java/com/ynxbd/common/service/RecipeService.java +++ b/src/main/java/com/ynxbd/common/service/RecipeService.java @@ -20,6 +20,7 @@ import com.ynxbd.common.result.Result; import com.ynxbd.common.result.ResultEnum; import com.ynxbd.common.result.ServiceException; import com.ynxbd.common.service.cache.PayCache; +import com.ynxbd.wx.config.MeTechnologyReConfig; import com.ynxbd.wx.utils.DateGenerate; import com.ynxbd.wx.wxfactory.WxMedicalHelper; import com.ynxbd.wx.wxfactory.WxPayHelper; @@ -315,6 +316,15 @@ public class RecipeService { if (recipeInfo.isRefund()) { failedList.add(recipeInfo); } + + // 如果是体检支付就只调用一次his结算 + if(recipeItem.getTreatNum().contains("P-")){ + // 体检缴费失败的所有费用进行退回 + if (recipeInfo.isRefund()) { + failedList = recipeList; + } + break; + } } long endTime = System.currentTimeMillis(); // 结束时间 log.info("{} [处方]请求HIS结束 耗时:{} outTradeNo={}, bankTransNo={}", merchantEnum.NAME, ((endTime - begTime) / 1000) + "s(" + (endTime - begTime) + "ms)", outTradeNo, bankTransNo); @@ -347,10 +357,12 @@ public class RecipeService { } } - String tip = String.format("共计缴费处方单数:%s,失败数:%s,超时数:%s", recipeList.size(), (failedList.size() - outTimeList.size()), outTimeList.size()); log.info("{} [处方]{}", merchantEnum.NAME, tip); + + MeTechnologyReConfig.reserveRun(patientId); //天助医技预约 + HCodeService.payNotifyReportHISData(openid, patientId); @@ -373,6 +385,7 @@ public class RecipeService { String patientId = recipe.getPatientId(); String bankTransNo = recipe.getBankTransNo(); BigDecimal recipeFee = recipe.getPayMoney(); + BigDecimal totalFee = recipe.getTotalFee(); order.setUpdateTime(recipe.getUpdateTime()); String tradeNo = recipe.getTradeNo(); @@ -397,6 +410,7 @@ public class RecipeService { treatNum, recipeIds, recipeFee.toString(), + totalFee.toString(), payDate, payTime, tradeNo, @@ -445,11 +459,20 @@ public class RecipeService { QuickDrugDispenseHelper.quickDrug(drugInfo, invoiceTransNo); } + // 更新支付信息 if (!recipeDao.updateHisPaidByTradeNo(tradeNo, hisTransNo, invoiceTransNo)) { log.info("[处方]更新HIS返回数据失败 outTradeNo={}, tradeNo={}, recipeId={}", outTradeNo, tradeNo, recipeId); } + // 如果是体检支付就更新所有处方 + if(treatNum.contains("P-")){ + // 更新支付信息 + if (!recipeDao.updateHisPaidByBankTransNo(bankTransNo, hisTransNo, invoiceTransNo)) { + log.info("[处方]更新体检缴费HIS返回数据失败 outTradeNo={}, bankTransNo={}, recipeId={}", outTradeNo, bankTransNo, recipeId); + } + } + if (new SelfHelpDao().updateNotice(treatNum)) { log.info("[自助开单]通知状态修改成功 treatNum={}", treatNum); }