|  |  |  | 
|---|
|  |  |  | import org.springframework.util.CollectionUtils; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.math.BigDecimal; | 
|---|
|  |  |  | import java.math.RoundingMode; | 
|---|
|  |  |  | import java.util.*; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | for(WxBillDetail detail : detailList){ | 
|---|
|  |  |  | if(StringUtils.equals(detail.getBillStatus(), "SUCCESS")){ | 
|---|
|  |  |  | //实收数据 | 
|---|
|  |  |  | bill4.setSumBill(detail.getSumBill());//交易笔数 | 
|---|
|  |  |  | bill4.setSumBill( detail.getSumBill());//交易笔数 | 
|---|
|  |  |  | bill4.setSumSuccessFee(Constants.formatDecimalNum(detail.getSettlementTotalFee()));//交易金额 | 
|---|
|  |  |  | bill4.setSumCmmsAmt(Constants.formatDecimalNum(detail.getCmmsAmt()));//交易手续费 | 
|---|
|  |  |  | } else if(StringUtils.equals(detail.getBillStatus(), "REFUND")){ | 
|---|
|  |  |  | } else if(StringUtils.equals(detail.getBillStatus(), "REFUND") || StringUtils.equals(detail.getBillStatus(), "REVOKED")){ | 
|---|
|  |  |  | //退款数据 | 
|---|
|  |  |  | bill4.setSumRefundBill(detail.getSumBill());//退款笔数 | 
|---|
|  |  |  | bill4.setSumRefundFee(detail.getRefundFee()); | 
|---|
|  |  |  | bill4.setSumRefundCmmsAmt(Constants.formatDecimalNum(detail.getCmmsAmt()));//退款手续费 | 
|---|
|  |  |  | bill4.setSumRefundBill(Constants.formatIntegerNum(bill4.getSumRefundBill())+detail.getSumBill());//退款笔数 | 
|---|
|  |  |  | bill4.setSumRefundFee(Constants.formatDecimalNum(bill4.getSumRefundFee()).add(Constants.formatDecimalNum(detail.getRefundFee()))); | 
|---|
|  |  |  | bill4.setSumRefundCmmsAmt(Constants.formatDecimalNum(bill4.getSumRefundCmmsAmt()).add(Constants.formatDecimalNum(Constants.formatDecimalNum(detail.getCmmsAmt()))));//退款手续费 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //结算金额 | 
|---|
|  |  |  | 
|---|
|  |  |  | //只能同步昨天10之前的数据 | 
|---|
|  |  |  | Calendar caln = Calendar.getInstance(); | 
|---|
|  |  |  | caln.setTime(ydate); | 
|---|
|  |  |  | //            System.out.println(caln.get(Calendar.HOUR_OF_DAY) ); | 
|---|
|  |  |  | if(caln.get(Calendar.HOUR_OF_DAY) <= 10){ | 
|---|
|  |  |  | if(caln.get(Calendar.HOUR_OF_DAY)  > 10){ | 
|---|
|  |  |  | throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,最近同步时间只能截止到昨天10点前!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | if(billInfoList!=null){ | 
|---|
|  |  |  | for (int i = 0; i <billInfoList.size(); i++) { | 
|---|
|  |  |  | WxPayBillInfo info =billInfoList.get(i); | 
|---|
|  |  |  | if(StringUtils.equals(info.getTradeType(),"REFUND" ) && !StringUtils.equals(info.getRefundState(),"SUCCESS" )){ | 
|---|
|  |  |  | if((StringUtils.equals(info.getTradeType(),"REFUND" )||StringUtils.equals(info.getTradeType(),"REVOKED" )) && !StringUtils.equals(info.getRefundState(),"SUCCESS" )){ | 
|---|
|  |  |  | //如果是非成功的退款数据,不进行同步 | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | //计算自行车收入,匹配来自自行车小程序的所有支付成功和退款成功的金额,作为自行车收入(累计收款金额-累计退款成功金额) | 
|---|
|  |  |  | if(StringUtils.equals(detail.getAppid(), WxMiniConfig.wxPayService.getConfig().getAppId())){ | 
|---|
|  |  |  | //自行车收入累计收款金额(支付成功总金额-退款总金额) | 
|---|
|  |  |  | if(StringUtils.equals(detail.getBillType(),"SUCCESS")){ | 
|---|
|  |  |  | if(StringUtils.equals(info.getTradeState(),"SUCCESS")){ | 
|---|
|  |  |  | //如果是交易 | 
|---|
|  |  |  | bill.setBikeFee(bill.getBikeFee().add(detail.getSettlementTotalFee())); | 
|---|
|  |  |  | }else  if(StringUtils.equals(info.getTradeType(),"REFUND" )){ | 
|---|
|  |  |  | bill.setBikeFee(bill.getBikeFee().subtract(detail.getCmmsAmt()) ); | 
|---|
|  |  |  | }else  if(StringUtils.equals(info.getTradeState(),"REFUND" ) || StringUtils.equals(info.getTradeState(),"REVOKED" )){ | 
|---|
|  |  |  | //如果退款成功,扣除退款金额 | 
|---|
|  |  |  | bill.setBikeFee(bill.getBikeFee().subtract(detail.getApplyRefundFee())); | 
|---|
|  |  |  | bill.setBikeFee(bill.getBikeFee().subtract(detail.getRefundFee()) ); | 
|---|
|  |  |  | bill.setBikeFee(bill.getBikeFee().subtract(detail.getCmmsAmt()) ); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|