@ -22,7 +22,6 @@ import com.ynxbd.wx.wxfactory.bean.MedicalOrder;
import com.ynxbd.wx.wxfactory.bean.MedicalUserInfo ;
import com.ynxbd.wx.wxfactory.bean.OrderTypeEnum ;
import com.ynxbd.wx.wxfactory.medical.MdConfig ;
import com.ynxbd.wx.wxfactory.medical.enums.MdRefundTypeEnum ;
import lombok.extern.slf4j.Slf4j ;
import java.math.BigDecimal ;
@ -346,23 +345,31 @@ public class MedicalService {
log . info ( "[医保][挂号]HIS结算调用超时 outTradeNo={}, bankTransNo={}, tradeNo={}, mdUserId={}" , outTradeNo , bankTransNo , tradeNo , mdUserId ) ;
return false ;
}
if ( MdConfig . IS_AUTO_REFUND ) {
if ( ! MdConfig . IS_AUTO_REFUND ) {
log . info ( "[医保][挂号]现金自动退费功能未开启 outTradeNo={}, bankTransNo={}, tradeNo={}" , outTradeNo , bankTransNo , tradeNo ) ;
return false ;
}
if ( respMessage ! = null & & ! respMessage . contains ( "(医保结算部分已回退)" ) ) {
log . info ( "[医保][挂号]HIS医保部分未退费成功,禁止现金部分退费 outTradeNo={}, bankTransNo={}, tradeNo={}" , outTradeNo , bankTransNo , tradeNo ) ;
return false ;
}
if ( cashFee . compareTo ( BigDecimal . ZERO ) = = 0 ) { // 现金部分为0
log . info ( "[医保][挂号]现金为0不执行退费 outTradeNo={}, bankTransNo={}, tradeNo={}" , outTradeNo , bankTransNo , tradeNo ) ;
return false ;
}
// 微信医保自动退费
MedicalOrder order = WxMedicalHelper . refundCash ( outTradeNo , ( "R" + tradeNo ) , tradeNo , cashFee , "系统繁忙缴费失败,自动退费" ) ;
MedicalOrder order = WxMedicalHelper . refundCash ( outTradeNo , tradeNo , cashFee , "系统繁忙缴费失败,自动退费" ) ;
boolean isOk = order . isOk ( ) ;
log . info ( "【微信】[医保][挂号]现金自动退费{} outTradeNo={}, bankTransNo={}, tradeNo={}" , ( isOk ? "成功" : "失败" ) , outTradeNo , bankTransNo , tradeNo ) ;
if ( isOk ) {
String refundResult = order . isOk ( ) ? WxPayHelper . OK : order . getMessage ( ) ;
log . info ( "【微信】[医保][挂号]现金自动退费 outTradeNo={}, bankTransNo={}, tradeNo={} [{}]:{}" , outTradeNo , bankTransNo , tradeNo , ( isOk ? "成功" : "失败" ) , order . getMessage ( ) ) ;
if ( ! regDao . updateRefundByTradeNo ( tradeNo , refundResult ) ) {
log . info ( "【微信】[医保][挂号]现金自动退费 修改数据库状态失败 tradeNo={}, refundResult={}" , tradeNo , refundResult ) ;
}
} else {
log . info ( "【微信】[医保][挂号]现金自动退费 失败:{}" , order . getMessage ( ) ) ;
}
return false ;
}
@ -429,7 +436,7 @@ public class MedicalService {
log . info ( "{} [医保][处方]更新商户信息成功 outTradeNo={}, bankTransNo={}" , merchantEnum . NAME , outTradeNo , bankTransNo ) ;
}
JsonResult jsonResult = HisMedicalDao . mdPay ( mdUserId , payDate , payTime , tradeNo , bankTransNo , cashFee ) ;
JsonResult jsonResult = HisMedicalDao . mdRecipe Pay ( mdUserId , payDate , payTime , tradeNo , bankTransNo , cashFee ) ;
if ( ! jsonResult . success ( ) ) {
String respCode = jsonResult . getCode ( ) ;
@ -445,23 +452,28 @@ public class MedicalService {
return false ;
}
if ( MdConfig . IS_AUTO_REFUND ) {
if ( ! MdConfig . IS_AUTO_REFUND ) {
log . info ( "[医保][处方][现金自动退费]功能未开启 outTradeNo={}, bankTransNo={}, tradeNo={}" , outTradeNo , bankTransNo , tradeNo ) ;
return false ;
}
if ( respMessage ! = null & & ! respMessage . contains ( "(医保结算部分已回退)" ) ) {
log . info ( "[医保][处方]HIS医保部分未退费成功,禁止现金部分退费 outTradeNo={}, bankTransNo={}, tradeNo={}" , outTradeNo , bankTransNo , tradeNo ) ;
return false ;
}
// 微信医保自动退费
MedicalOrder order = WxMedicalHelper . refundCash ( outTradeNo , ( "R" + tradeNo ) , tradeNo , cashFee , "系统繁忙缴费失败,自动退费" ) ;
if ( cashFee . compareTo ( BigDecimal . ZERO ) = = 0 ) { // 现金部分为0
log . info ( "[医保][处方]现金为0不执行退费 outTradeNo={}, bankTransNo={}, tradeNo={}" , outTradeNo , bankTransNo , tradeNo ) ;
return false ;
}
MedicalOrder order = WxMedicalHelper . refundCash ( outTradeNo , tradeNo , cashFee , "系统繁忙缴费失败,自动退费" ) ;
boolean isOk = order . isOk ( ) ;
log . info ( "【微信】[医保][处方]现金自动退费 {} outTradeNo={}, bankTransNo={}, tradeNo={}" , ( isOk ? "成功" : "失败" ) , outTradeNo , bankTransNo , tradeNo ) ;
if ( isOk ) {
String refundResult = order . isOk ( ) ? WxPayHelper . OK : order . getMessage ( ) ;
log . info ( "【微信】[医保][处方]现金自动退费 outTradeNo={}, bankTransNo={}, tradeNo={} [{}]:{}" , outTradeNo , bankTransNo , tradeNo , ( isOk ? "成功" : "失败" ) , order . getMessage ( ) ) ;
if ( ! recipeDao . updateRefundByTradeNo ( tradeNo , refundResult ) ) {
log . info ( "[医保][处方]现金自动退费 修改数据库状态失败 tradeNo={}, refundResult={}" , tradeNo , refundResult ) ;
}
} else {
log . info ( "【微信】[医保][处方]现金自动退费 失败:{}" , order . getMessage ( ) ) ;
}
return false ;
}