@ -45,15 +45,15 @@ public class MedicalService {
public void commonNotify ( MerchantEnum merchantEnum , String notifyType , String outTradeNo , BigDecimal totalFee , String bankTransNo , String payDate , String payTime , String openid , String payInfo ) {
switch ( PEnum . toEnum ( notifyType ) ) {
case RECIPE :
rxPaidNotify ( merchantEnum , outTradeNo , bankTransNo , payDate , payTime , openid , payInfo ) ;
rxPaidNoticeHis ( merchantEnum , outTradeNo , bankTransNo , payDate , payTime , openid , payInfo ) ;
break ;
case REG : // 挂号
regPaidNotify ( merchantEnum , outTradeNo , bankTransNo , payDate , payTime , openid , payInfo ) ;
regPaidNoticeHis ( merchantEnum , outTradeNo , bankTransNo , payDate , payTime , openid , payInfo ) ;
break ;
case OUT_HOSP : // 住院结算
outHospPaidNotify ( merchantEnum , outTradeNo , bankTransNo , payDate , payTime , openid , payInfo ) ;
outHospPaidNoticeHis ( merchantEnum , outTradeNo , bankTransNo , payDate , payTime , openid , payInfo ) ;
break ;
default :
@ -196,9 +196,9 @@ public class MedicalService {
throw new ServiceException ( "[上传明细失败]响应参数ExtData缺失" ) ;
}
JSONObject extDataJson = JsonHelper . parseObject ( extData ) ;
JSONObject preSetl = extDataJson . getJSONObject ( "preSetl " ) ;
JSONObject setLInfo = extDataJson . getJSONObject ( "SETLINFO " ) ;
medicalInfo . setMedFeeSumAmt ( new BigDecimal ( preSetl . getString ( "medfee_sumamt" ) ) ) ; // 医保金额
medicalInfo . setMedFeeSumAmt ( new BigDecimal ( setLInfo . getString ( "medfee_sumamt" ) ) ) ; // 医保金额
medicalInfo . setTotalFee ( totalFee ) ; // 医保订单总金额
medicalInfo . setCashFee ( cashFee ) ; // 现金部分
@ -578,7 +578,7 @@ public class MedicalService {
* @param openid openid
* @param payInfo 支付信息
* /
public boolean regPaidNotify ( MerchantEnum merchantEnum , String outTradeNo , String bankTransNo , String payDate , String payTime , String openid , String payInfo ) {
public boolean regPaidNoticeHis ( MerchantEnum merchantEnum , String outTradeNo , String bankTransNo , String payDate , String payTime , String openid , String payInfo ) {
if ( outTradeNo = = null | | bankTransNo = = null | | payDate = = null | | payTime = = null ) {
log . info ( "[医保][挂号]HIS结算参数缺失 outTradeNo={}, bankTransNo={}, payDate={}, payTime={}" , outTradeNo , bankTransNo , payDate , payTime ) ;
return false ;
@ -595,7 +595,7 @@ public class MedicalService {
}
if ( ! regDao . updateMerPaidByOutTradeNo ( outTradeNo , payDate , payTime , bankTransNo ) ) {
log . info ( "[医保][挂号]修改订单支付状态 outTradeNo={}, bankTransNo={}" , outTradeNo , bankTransNo ) ;
log . info ( "[医保][挂号]修改订单支付状态-失败 outTradeNo={}, bankTransNo={}" , outTradeNo , bankTransNo ) ;
return false ;
}
@ -647,7 +647,7 @@ public class MedicalService {
}
// 医保自动退费
ApiResult apiResult = new MedicalService ( ) . autoRefund ( merchantEnum , outTradeNo , tradeNo , cashFee , "系统繁忙缴费失败,自动退费" ) ;
ApiResult apiResult = new MedicalService ( ) . autoRefund ( merchantEnum , outTradeNo , tradeNo , cashFee , respMessage ) ;
boolean isOk = apiResult . isOk ( ) ;
String refundResult = apiResult . getMessage ( ) ;
@ -680,7 +680,7 @@ public class MedicalService {
* @param openid openid
* @param payInfo 支付信息
* /
public boolean outHospPaidNotify ( MerchantEnum merchantEnum , String outTradeNo , String bankTransNo , String payDate , String payTime , String openid , String payInfo ) {
public boolean outHospPaidNoticeHis ( MerchantEnum merchantEnum , String outTradeNo , String bankTransNo , String payDate , String payTime , String openid , String payInfo ) {
if ( outTradeNo = = null | | bankTransNo = = null | | payDate = = null | | payTime = = null ) {
log . info ( "[医保][住院结算]HIS结算参数缺失 outTradeNo={}, bankTransNo={}, payDate={}, payTime={}" , outTradeNo , bankTransNo , payDate , payTime ) ;
return false ;
@ -697,12 +697,12 @@ public class MedicalService {
InHospPayDao inHospPayDao = new InHospPayDao ( ) ;
if ( ! new InHospPayDao ( ) . updateMerPaidByOutTradeNo ( outTradeNo , payDate , payTime , bankTransNo ) ) {
log . info ( "[医保][住院结算]修改订单支付状态 outTradeNo={}, bankTransNo={}" , outTradeNo , bankTransNo ) ;
log . info ( "[医保][住院结算]修改订单支付状态-失败 outTradeNo={}, bankTransNo={}" , outTradeNo , bankTransNo ) ;
return false ;
}
// order.setPayDate(payDate);
// order.setPayTime(payTime);
order . setPayDate ( payDate ) ;
order . setPayTime ( payTime ) ;
order . setBankTransNo ( bankTransNo ) ;
String mdUserId = order . getMdUserId ( ) ;
@ -715,7 +715,7 @@ public class MedicalService {
return false ;
}
//
JsonResult jsonResult = HisMedDao . in HospMedPay( merchantEnum , mdUserId , payDate , payTime , tradeNo , bankTransNo , cashFee , openid ) ;
JsonResult jsonResult = HisMedDao . out HospMedPay( merchantEnum , mdUserId , payDate , payTime , tradeNo , bankTransNo , cashFee , openid ) ;
if ( ! jsonResult . success ( ) ) {
String respCode = jsonResult . getCode ( ) ;
String respMessage = jsonResult . getMessage ( ) ;
@ -736,17 +736,27 @@ public class MedicalService {
}
if ( cashFee . compareTo ( BigDecimal . ZERO ) = = 0 ) { // 现金部分为0
// log.info("[医保][住院结算]现金为0不执行退费-修改退费状态 outTradeNo={}, bankTransNo={}, tradeNo={}", outTradeNo, bankTransNo, tradeNo);
// if (!inHospPayDao.updateRefundByTradeNo(tradeNo, "OK")) {
// log.info("[医保][住院结算] 修改数据库退费状态失败 tradeNo={}", tradeNo);
// }
log . info ( "[医保][住院结算]现金为0不执行退费-修改退费状态 outTradeNo={}, bankTransNo={}, tradeNo={}" , outTradeNo , bankTransNo , tradeNo ) ;
if ( ! inHospPayDao . updateRefundByTradeNo ( tradeNo , "OK" ) ) {
log . info ( "[医保][住院结算]修改数据库退费状态- 失败 tradeNo={}" , tradeNo ) ;
}
return false ;
}
// if (!WxMedConfig.IS_AUTO_REFUND) {
// log.info("[医保][住院结算]现金自动退费功能未开启 outTradeNo={}, bankTransNo={}, tradeNo={}", outTradeNo, bankTransNo, tradeNo);
// return false;
// }
if ( ! WxMedConfig . IS_AUTO_REFUND ) {
log . info ( "[医保][住院结算]现金自动退费功能未开启 outTradeNo={}, bankTransNo={}, tradeNo={}" , outTradeNo , bankTransNo , tradeNo ) ;
return false ;
}
// 医保自动退费
ApiResult apiResult = new MedicalService ( ) . autoRefund ( merchantEnum , outTradeNo , tradeNo , cashFee , respMessage ) ;
boolean isOk = apiResult . isOk ( ) ;
String refundResult = apiResult . getMessage ( ) ;
log . info ( "{}[住院结算]现金自动退费 outTradeNo={}, bankTransNo={}, tradeNo={} [{}]:{}" , merchantEnum . NAME , outTradeNo , bankTransNo , tradeNo , ( isOk ? "成功" : "失败" ) , refundResult ) ;
if ( ! inHospPayDao . updateRefundByTradeNo ( tradeNo , refundResult ) ) {
log . info ( "{}[住院结算]现金自动退费-修改数据库状态失败 tradeNo={}, refundResult={}" , merchantEnum . NAME , tradeNo , refundResult ) ;
}
return false ;
}
@ -784,7 +794,7 @@ public class MedicalService {
* @param openid openid
* @param payInfo 支付信息
* /
public boolean rxPaidNotify ( MerchantEnum merchantEnum , String outTradeNo , String bankTransNo , String payDate , String payTime , String openid , String payInfo ) {
public boolean rxPaidNoticeHis ( MerchantEnum merchantEnum , String outTradeNo , String bankTransNo , String payDate , String payTime , String openid , String payInfo ) {
if ( outTradeNo = = null | | bankTransNo = = null | | payDate = = null | | payTime = = null ) {
log . info ( "[医保][处方]HIS结算参数缺失 outTradeNo={}, bankTransNo={}, payDate={}, payTime={}" , outTradeNo , bankTransNo , payDate , payTime ) ;
return false ;
@ -861,7 +871,7 @@ public class MedicalService {
return false ;
}
ApiResult apiResult = new MedicalService ( ) . autoRefund ( merchantEnum , outTradeNo , tradeNo , cashFee , "系统繁忙缴费失败,自动退费" ) ;
ApiResult apiResult = new MedicalService ( ) . autoRefund ( merchantEnum , outTradeNo , tradeNo , cashFee , respMessage ) ;
boolean isOk = apiResult . isOk ( ) ;
String refundResult = apiResult . getMessage ( ) ;