|
@@ -9,10 +9,9 @@ import com.bz.smart_city.dao.pay.*;
|
|
|
import com.bz.smart_city.dto.LoginUser;
|
|
|
import com.bz.smart_city.dto.pay.*;
|
|
|
import com.bz.smart_city.dto.pay.payfee.*;
|
|
|
-import com.bz.smart_city.entity.pay.BaseClosingAccountInfo;
|
|
|
-import com.bz.smart_city.entity.pay.PayPayReceived;
|
|
|
-import com.bz.smart_city.entity.pay.PayReceivable;
|
|
|
+import com.bz.smart_city.entity.pay.*;
|
|
|
import com.bz.smart_city.service.pay.PayFeeService;
|
|
|
+import io.swagger.annotations.ApiModelProperty;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -21,6 +20,7 @@ import javax.annotation.Resource;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.BigInteger;
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Iterator;
|
|
|
import java.util.List;
|
|
@@ -38,19 +38,23 @@ public class PayFeeServiceImp implements PayFeeService {
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
- PayFeeMapper payFeeMapper;
|
|
|
+ private PayFeeMapper payFeeMapper;
|
|
|
|
|
|
@Resource
|
|
|
- PayPayReceivedMapper payPayReceivedMapper;
|
|
|
+ private PayPayReceivedMapper payPayReceivedMapper;
|
|
|
|
|
|
@Resource
|
|
|
- PayTransactiondetailsMapper payTransactiondetailsMapper;
|
|
|
+ private PayTransactiondetailsMapper payTransactiondetailsMapper;
|
|
|
|
|
|
@Resource
|
|
|
- PaySysDictMapper sysDictMapper;
|
|
|
+ private PaySysDictMapper sysDictMapper;
|
|
|
|
|
|
@Resource
|
|
|
- BaseClosingAccountInfoMapper baseClosingAccountInfoMapper;
|
|
|
+ private BaseClosingAccountInfoMapper baseClosingAccountInfoMapper;
|
|
|
+ @Resource
|
|
|
+ private PayAgenttransactionMapper payAgenttransactionMapper;
|
|
|
+ @Resource
|
|
|
+ private PayCheckbalanceMapper payCheckbalanceMapper;
|
|
|
|
|
|
/**
|
|
|
* 柜台缴费
|
|
@@ -66,7 +70,7 @@ public class PayFeeServiceImp implements PayFeeService {
|
|
|
public PayfeeResult payFeeCounter( String id,Integer payway,BigDecimal transAmount, Integer balancetype,BigDecimal debt,
|
|
|
BigDecimal ycremaining,Integer amount,BigDecimal price){
|
|
|
//实收金额不可为负数
|
|
|
- if(transAmount.compareTo(BigDecimal.ZERO)!=1){
|
|
|
+ if(transAmount.compareTo(BigDecimal.ZERO) == -1){
|
|
|
throw new ServiceException(ResultStatus.PAYFEE_TRANSAMOUNT_BELOW_ZERO);
|
|
|
}
|
|
|
//欠费金额不能为负数
|
|
@@ -322,7 +326,7 @@ public class PayFeeServiceImp implements PayFeeService {
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public String payFee(String accountnumber, String metercode, BigDecimal transAmount, Integer payway , LocalDateTime transTime, List<BigInteger> receivableIds,Integer siteId,Integer customerId,Integer userId) {
|
|
|
//交易金额不可为负数
|
|
|
- if(transAmount.compareTo(BigDecimal.ZERO)!=1){
|
|
|
+ if(transAmount.compareTo(BigDecimal.ZERO) == -1){
|
|
|
throw new ServiceException(ResultStatus.PAYFEE_TRANSAMOUNT_BELOW_ZERO);
|
|
|
}
|
|
|
LoginUser loginUser = UserUtil.getCurrentUser();
|
|
@@ -565,7 +569,7 @@ public class PayFeeServiceImp implements PayFeeService {
|
|
|
public PayfeeResult rechargefeeCounter(String accountId , BigDecimal transAmount, Integer payway ,Integer balancetype,BigDecimal waterAmount){
|
|
|
|
|
|
//交易金额不可为负数
|
|
|
- if(transAmount.compareTo(BigDecimal.ZERO)!=1){
|
|
|
+ if(transAmount.compareTo(BigDecimal.ZERO) == -1){
|
|
|
throw new ServiceException(ResultStatus.PAYFEE_TRANSAMOUNT_BELOW_ZERO);
|
|
|
}
|
|
|
LoginUser loginUser = UserUtil.getCurrentUser();
|
|
@@ -647,7 +651,7 @@ public class PayFeeServiceImp implements PayFeeService {
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public String rechargefee(String accountnumber, String metercode, BigDecimal transAmount, Integer payway , LocalDateTime transTime,Integer siteId,Integer customerId,Integer userId){
|
|
|
//交易金额不可为负数
|
|
|
- if(transAmount.compareTo(BigDecimal.ZERO)!=1){
|
|
|
+ if(transAmount.compareTo(BigDecimal.ZERO) == -1){
|
|
|
throw new ServiceException(ResultStatus.PAYFEE_TRANSAMOUNT_BELOW_ZERO);
|
|
|
}
|
|
|
LoginUser loginUser = UserUtil.getCurrentUser();
|
|
@@ -947,5 +951,344 @@ public class PayFeeServiceImp implements PayFeeService {
|
|
|
public BigInteger getWaterPropertyId(BigInteger id){
|
|
|
return payFeeMapper.getWaterPropertyId(id);
|
|
|
}
|
|
|
+ public List<BankPayfeeAccountInfo> selectBankPayfeeAccountInfo(String queryType,String queryValue){
|
|
|
+ return payFeeMapper.selectBankPayfeeAccountInfo(queryType,queryValue);
|
|
|
+ }
|
|
|
+
|
|
|
+ public PayPayAgentbranch selectPayAgentbranchInfo(String code, Integer customerId){
|
|
|
+ return payFeeMapper.selectPayAgentbranchInfo(code,customerId);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 银行代缴充值
|
|
|
+ * @param payPayAgentbranch
|
|
|
+ * @param orderCode
|
|
|
+ * @param accountNumber
|
|
|
+ * @param money
|
|
|
+ * @param payTime
|
|
|
+ */
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public BankPayfeeMsg payfeeByBank( PayPayAgentbranch payPayAgentbranch ,String orderCode,String accountNumber,Float money, String payTime ){
|
|
|
+ //如果传入时间则用传入的时间做交易时间
|
|
|
+ LocalDateTime localDateTime;
|
|
|
+ try{
|
|
|
+ DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
|
|
|
+ localDateTime= LocalDateTime.parse(payTime, dateTimeFormatter);
|
|
|
+ }catch (Exception e){
|
|
|
+
|
|
|
+ return new BankPayfeeMsg("0001","时间格式异常");
|
|
|
+ }
|
|
|
+
|
|
|
+ Integer customerId=payPayAgentbranch.getCustomerId();
|
|
|
+ Integer siteId=payPayAgentbranch.getSiteId();
|
|
|
+ //计费系统需要有客户站点信息
|
|
|
+ if(siteId ==null || customerId == null ){
|
|
|
+ return new BankPayfeeMsg("0005","系统信息配置异常");
|
|
|
+ }
|
|
|
+
|
|
|
+ BigDecimal payfee = new BigDecimal(money);
|
|
|
+ //实收金额不可为负数
|
|
|
+ if(payfee.compareTo(BigDecimal.ZERO) == -1){
|
|
|
+ return new BankPayfeeMsg("2002","小于最小缴费金额");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ //根据客编获取客户信息
|
|
|
+ PayCustomRechargeDto payCustomRechargeDto = payFeeMapper.getCustomInfoByMeterOrAccount(null,accountNumber,null,BigInteger.valueOf(siteId),BigInteger.valueOf(customerId));
|
|
|
+ if(payCustomRechargeDto == null ){
|
|
|
+ //获取客户信息失败
|
|
|
+ return new BankPayfeeMsg("1001","查询的号码不合法或不存在");
|
|
|
+ }
|
|
|
+ //查询欠费信息
|
|
|
+ List<PayReceivable> payReceivableList =payFeeMapper.getReceivable(siteId,customerId,payCustomRechargeDto.getAccountId(),null);
|
|
|
+
|
|
|
+ //支付方式
|
|
|
+ List<PaySysDictSelectDto> payways = sysDictMapper.getDicts("支付方式",BigInteger.valueOf(siteId),BigInteger.valueOf(customerId));
|
|
|
+ if(payways.size() == 0){
|
|
|
+ return new BankPayfeeMsg("0005","系统信息配置异常");
|
|
|
+ }
|
|
|
+ String paywayName = payways.stream().filter(item -> item.getValue().equals("3")).findFirst().get().getLabel();
|
|
|
+
|
|
|
+// Map<String,PaySysDictSelectDto> paywayMap = payways.stream().collect(Collectors.toMap(PaySysDictSelectDto::getValue, PaySysDictSelectDto->PaySysDictSelectDto));
|
|
|
+ //收费类型
|
|
|
+ List<PaySysDictSelectDto> feetypes = sysDictMapper.getDicts("收费类型",BigInteger.valueOf(siteId),BigInteger.valueOf(customerId));
|
|
|
+ if(payways.size() == 0) {
|
|
|
+ return new BankPayfeeMsg("0005","系统信息配置异常");
|
|
|
+ }
|
|
|
+ Map<String, PaySysDictSelectDto> feetypeMap = feetypes.stream().collect(Collectors.toMap(PaySysDictSelectDto::getValue, PaySysDictSelectDto -> PaySysDictSelectDto));
|
|
|
|
|
|
+ //生成批次号
|
|
|
+ // 微信:W 现金、预存账户:C 银行:B 支付宝:A
|
|
|
+ String payseriesno= Util.getBatchNo("B",payCustomRechargeDto.getAccountnumber());
|
|
|
+ //获取账期
|
|
|
+ BaseClosingAccountInfo baseClosingAccountInfo=payFeeMapper.getLastClosingAccount(siteId,customerId);
|
|
|
+ if(baseClosingAccountInfo == null){
|
|
|
+ //获取账期信息失败、
|
|
|
+ return new BankPayfeeMsg("0005","系统信息配置异常");
|
|
|
+ }
|
|
|
+ int month =baseClosingAccountInfo.getMonth();
|
|
|
+ int year =baseClosingAccountInfo.getYear();
|
|
|
+
|
|
|
+ if(payReceivableList.size() == 0 ){ //没有应收信息走仅充值
|
|
|
+ //余额
|
|
|
+ BigDecimal remaining = payCustomRechargeDto.getRemaining();
|
|
|
+ //生成交易明细
|
|
|
+ PayTransactiondetails payTransactiondetails = getPayTransactiondetails(3, paywayName, localDateTime, payCustomRechargeDto, payseriesno, month, year, payfee, siteId, customerId, 1);
|
|
|
+ payTransactiondetails.setName(payCustomRechargeDto.getAccountname() + payCustomRechargeDto.getAccountnumber() + "充值");
|
|
|
+ payTransactiondetails.setTranstype(1);
|
|
|
+ payTransactiondetails.setTranstypeLabel("充值");
|
|
|
+ payTransactiondetails.setRemaining(remaining);//交易前账户余额
|
|
|
+ remaining = remaining.add(payfee);
|
|
|
+ payTransactiondetails.setLastrecreamaing(remaining);//交易后账户余额
|
|
|
+ payTransactiondetailsMapper.insert(payTransactiondetails);
|
|
|
+ //修改预存账户
|
|
|
+ payFeeMapper.updateRechargeaccount(remaining, BigInteger.valueOf(1), localDateTime, payCustomRechargeDto.getRechargeId());
|
|
|
+ //更新客户状态
|
|
|
+ payFeeMapper.updateAccountState(payCustomRechargeDto.getAccountId());
|
|
|
+
|
|
|
+ }else{
|
|
|
+ BigDecimal debts=BigDecimal.ZERO;
|
|
|
+ for(PayReceivable payReceivable: payReceivableList){
|
|
|
+ debts=debts.add(payReceivable.getDebt());
|
|
|
+ }
|
|
|
+ //预存+实收<欠费 金额不足
|
|
|
+ if(payCustomRechargeDto.getRemaining().add(payfee).compareTo(debts) == -1){
|
|
|
+ return new BankPayfeeMsg("2002","小于最小缴费金额");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //余额
|
|
|
+ BigDecimal remaining = payCustomRechargeDto.getRemaining();
|
|
|
+ //用作明细记录交易前余额
|
|
|
+ BigDecimal oldRemaining = payCustomRechargeDto.getRemaining();
|
|
|
+ //交易明细最后统一赋值交易前后余额,批量保存
|
|
|
+ List<PayTransactiondetails> transactiondetailsDtoList = new ArrayList();
|
|
|
+ //预存抵扣
|
|
|
+ Iterator<PayReceivable> iterator = payReceivableList.iterator();
|
|
|
+ while(iterator.hasNext()) {
|
|
|
+ //抵扣的应收
|
|
|
+ PayReceivable payReceivable=iterator.next();
|
|
|
+ //账户余额先抵扣
|
|
|
+ if (remaining.compareTo(BigDecimal.ZERO) == 1) {
|
|
|
+ if(payReceivable.getDebt().compareTo(BigDecimal.ZERO) != 1){
|
|
|
+ //欠费不大于零直接移除
|
|
|
+ iterator.remove();
|
|
|
+ }else if(remaining.compareTo(payReceivable.getDebt()) != -1){
|
|
|
+ //预存余额不小于欠费(完全抵扣)
|
|
|
+ iterator.remove();
|
|
|
+ remaining = remaining.subtract(payReceivable.getDebt());//修改余额
|
|
|
+ //生成并保存实收
|
|
|
+ PayPayReceived payPayReceived = getReceived(payReceivable, year, month, localDateTime,5,payseriesno,payReceivable.getDebt(),feetypeMap, siteId, customerId, 1 );
|
|
|
+ //生成交易明细
|
|
|
+ PayTransactiondetails payTransactiondetails = getPayTransactiondetails(5,"预存账户", localDateTime, payCustomRechargeDto, payseriesno, month, year, payReceivable.getDebt().negate(), siteId, customerId, 1 );
|
|
|
+ payTransactiondetails.setReceivedId(payPayReceived.getId());
|
|
|
+ payTransactiondetails.setName(payCustomRechargeDto.getAccountname() + payCustomRechargeDto.getAccountnumber() + "扣费");
|
|
|
+ payTransactiondetails.setTranstype(2);
|
|
|
+ payTransactiondetails.setTranstypeLabel("扣费");
|
|
|
+ transactiondetailsDtoList.add(payTransactiondetails);
|
|
|
+ //修改应收
|
|
|
+ payReceivable.setDebt(BigDecimal.ZERO);
|
|
|
+ payReceivable.setUpdateDate(localDateTime);
|
|
|
+ payReceivable.setUpdateBy(BigInteger.valueOf(1));
|
|
|
+ payFeeMapper.updatePayReceivable(payReceivable);
|
|
|
+ }else{
|
|
|
+ //预存余额小于于欠费(部分抵扣)
|
|
|
+ //生成并保存实收
|
|
|
+
|
|
|
+ PayPayReceived payPayReceived = getReceived(payReceivable, year, month, localDateTime,5,payseriesno,remaining,feetypeMap, siteId, customerId, 1 );
|
|
|
+
|
|
|
+ PayTransactiondetails payTransactiondetails = getPayTransactiondetails(5, "预存账户",localDateTime, payCustomRechargeDto, payseriesno, month, year, remaining.negate() , siteId, customerId, 1 );
|
|
|
+ payTransactiondetails.setReceivedId(payPayReceived.getId());
|
|
|
+ payTransactiondetails.setName(payCustomRechargeDto.getAccountname() + payCustomRechargeDto.getAccountnumber() + "扣费");
|
|
|
+ payTransactiondetails.setTranstype(2);
|
|
|
+ payTransactiondetails.setTranstypeLabel("扣费");
|
|
|
+ transactiondetailsDtoList.add(payTransactiondetails);
|
|
|
+ //修改应收
|
|
|
+ payReceivable.setDebt(payReceivable.getDebt().subtract(remaining));
|
|
|
+ payReceivable.setUpdateDate(localDateTime);
|
|
|
+ payReceivable.setUpdateBy(BigInteger.valueOf(1));
|
|
|
+ payFeeMapper.updatePayReceivable(payReceivable);
|
|
|
+
|
|
|
+ remaining = BigDecimal.ZERO;//修改余额
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //缴费抵扣
|
|
|
+ Iterator<PayReceivable> iteratorTransAmount = payReceivableList.iterator();
|
|
|
+ while(iteratorTransAmount.hasNext()) {
|
|
|
+ //抵扣的应收
|
|
|
+ PayReceivable payReceivable=iteratorTransAmount.next();
|
|
|
+ //交易金额抵扣
|
|
|
+ if (payfee.compareTo(BigDecimal.ZERO) == 1) {
|
|
|
+ if(payReceivable.getDebt().compareTo(BigDecimal.ZERO) != 1){
|
|
|
+ //欠费不大于零直接移除
|
|
|
+ iteratorTransAmount.remove();
|
|
|
+ }else if(payfee.compareTo(payReceivable.getDebt()) != -1){
|
|
|
+ //交易金额不小于欠费(完全抵扣)
|
|
|
+ iteratorTransAmount.remove();
|
|
|
+ payfee = payfee.subtract(payReceivable.getDebt());//修改剩余交易金额
|
|
|
+
|
|
|
+ //生成并保存实收
|
|
|
+ getReceived(payReceivable, year, month, localDateTime,3,payseriesno,payReceivable.getDebt(),feetypeMap, siteId, customerId, 1 );
|
|
|
+ //修改应收
|
|
|
+ payReceivable.setDebt(BigDecimal.ZERO);
|
|
|
+ payReceivable.setUpdateDate(localDateTime);
|
|
|
+ payReceivable.setUpdateBy(BigInteger.valueOf(1));
|
|
|
+ payFeeMapper.updatePayReceivable(payReceivable);
|
|
|
+
|
|
|
+ }else{
|
|
|
+ //交易金额小于于欠费(部分抵扣)
|
|
|
+ //生成并保存实收
|
|
|
+
|
|
|
+ getReceived(payReceivable, year, month, localDateTime,3,payseriesno,payfee,feetypeMap, siteId, customerId, 1 );
|
|
|
+ //修改应收
|
|
|
+ payReceivable.setDebt(payReceivable.getDebt().subtract(payfee));
|
|
|
+ payReceivable.setUpdateDate(localDateTime);
|
|
|
+ payReceivable.setUpdateBy(BigInteger.valueOf(1));
|
|
|
+ payFeeMapper.updatePayReceivable(payReceivable);
|
|
|
+ payfee = BigDecimal.ZERO;//修改余额
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //余额充值或划扣有余额
|
|
|
+ if( payfee.compareTo(BigDecimal.ZERO) == 1){
|
|
|
+ //修改余额
|
|
|
+ remaining=remaining.add(payfee);
|
|
|
+ //生成交易明细
|
|
|
+ PayTransactiondetails payTransactiondetails = getPayTransactiondetails(3, paywayName,localDateTime, payCustomRechargeDto, payseriesno, month, year, payfee, siteId, customerId, 1 );
|
|
|
+ payTransactiondetails.setName(payCustomRechargeDto.getAccountname() + payCustomRechargeDto.getAccountnumber() + "缴费");
|
|
|
+ payTransactiondetails.setTranstype(4);
|
|
|
+ payTransactiondetails.setTranstypeLabel("账户转预存");
|
|
|
+ transactiondetailsDtoList.add(payTransactiondetails);
|
|
|
+ }
|
|
|
+
|
|
|
+ //修改预存账户
|
|
|
+ payFeeMapper.updateRechargeaccount(remaining,BigInteger.valueOf(1),localDateTime,payCustomRechargeDto.getRechargeId());
|
|
|
+ //更新客户状态
|
|
|
+ payFeeMapper.updateAccountState(payCustomRechargeDto.getAccountId());
|
|
|
+ //赋值交易明细交易前后余额并保存
|
|
|
+ for(PayTransactiondetails payTransactiondetails : transactiondetailsDtoList){
|
|
|
+ payTransactiondetails.setRemaining(oldRemaining);//交易前账户余额
|
|
|
+ payTransactiondetails.setLastrecreamaing(remaining);//交易后账户余额
|
|
|
+ }
|
|
|
+ //批量保存交易明细
|
|
|
+ if(transactiondetailsDtoList.size()>0){
|
|
|
+ payTransactiondetailsMapper.batchInsert(transactiondetailsDtoList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //第三方交易明细
|
|
|
+ PayAgenttransaction payAgenttransaction = new PayAgenttransaction();
|
|
|
+ payAgenttransaction.setAccountname(payCustomRechargeDto.getAccountname());
|
|
|
+ payAgenttransaction.setAccountnumber(payCustomRechargeDto.getAccountnumber());
|
|
|
+ payAgenttransaction.setAgentbranchId(payPayAgentbranch.getId());
|
|
|
+ payAgenttransaction.setAgentName(payPayAgentbranch.getName());
|
|
|
+ payAgenttransaction.setAgentCode(payPayAgentbranch.getCode());
|
|
|
+ payAgenttransaction.setAmount(new BigDecimal(money));
|
|
|
+ payAgenttransaction.setState(0);
|
|
|
+ payAgenttransaction.setTranstime(localDateTime);
|
|
|
+ payAgenttransaction.setPayseriesno(payseriesno);
|
|
|
+ payAgenttransaction.setOrderNo(orderCode);
|
|
|
+ payAgenttransaction.setSiteId(BigInteger.valueOf(siteId));
|
|
|
+ payAgenttransaction.setCustomerId(BigInteger.valueOf(customerId));
|
|
|
+ payAgenttransaction.setCreateBy(BigInteger.valueOf(1));
|
|
|
+ payAgenttransaction.setCreateDate(LocalDateTime.now());
|
|
|
+ payAgenttransaction.setUpdateBy(BigInteger.valueOf(1));
|
|
|
+ payAgenttransaction.setUpdateDate(LocalDateTime.now());
|
|
|
+ payAgenttransaction.setRemarks("银行代缴充值");
|
|
|
+ payAgenttransaction.setDelFlag("0");
|
|
|
+ payAgenttransactionMapper.insertAgenttransaction(payAgenttransaction);
|
|
|
+ return new BankPayfeeMsg("9999","交易成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public BankCheckBillsMsg checkBill( PayPayAgentbranch payPayAgentbranch, BankCheckBillParm bankCheckBillParm ){
|
|
|
+
|
|
|
+ //对账成功的对账信息
|
|
|
+ List<PayCheckbalance> payCheckbalances = new ArrayList();
|
|
|
+ //对账失败的
|
|
|
+ List<BankCheckBill> bankCheckBillList = new ArrayList();
|
|
|
+ for(BankCheckBill bankCheckBill:bankCheckBillParm.getTransDetails()){
|
|
|
+ if(null != bankCheckBill.checkParmIsNull()){
|
|
|
+ bankCheckBill.setMessage(bankCheckBill.checkParmIsNull());
|
|
|
+ bankCheckBillList.add(bankCheckBill);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ //订单号查询第三方交易记录
|
|
|
+ PayAgenttransactionDto payAgenttransactionDto = payFeeMapper.selectAgenttransaction(bankCheckBill.getOrderCode());
|
|
|
+ //缺失记录的补记录(缴费)
|
|
|
+ if(payAgenttransactionDto == null || payAgenttransactionDto.getId() == null){
|
|
|
+ BankPayfeeMsg bankPayfeeMsg = payfeeByBank(payPayAgentbranch,bankCheckBill.getOrderCode(),bankCheckBill.getAccountNumber(),bankCheckBill.getMoney(),bankCheckBill.getPayTime());
|
|
|
+ if(!bankPayfeeMsg.getRtnCode().equals("9999")){
|
|
|
+ bankCheckBill.setMessage("补缴失败:"+bankPayfeeMsg.getRtnMsg());
|
|
|
+ bankCheckBillList.add(bankCheckBill);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }else if(payAgenttransactionDto.getState().equals(3)){
|
|
|
+ bankCheckBill.setMessage("已对账");
|
|
|
+ bankCheckBillList.add(bankCheckBill);
|
|
|
+ continue;
|
|
|
+ }else if(payAgenttransactionDto .getAmount() == null || payAgenttransactionDto .getAmount().compareTo(new BigDecimal(bankCheckBill.getMoney())) != 0){
|
|
|
+ bankCheckBill.setMessage("对账金额有误");
|
|
|
+ bankCheckBillList.add(bankCheckBill);
|
|
|
+ continue;
|
|
|
+ }else if(payAgenttransactionDto .getAccountnumber() == null || !payAgenttransactionDto .getAccountnumber().equals(bankCheckBill.getAccountNumber())){
|
|
|
+ bankCheckBill.setMessage("对账用户编码有误");
|
|
|
+ bankCheckBillList.add(bankCheckBill);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ //对账信息无误,修改第三方交易明细状态3
|
|
|
+ payCheckbalanceMapper.updateAgenttransactionState(payAgenttransactionDto.getId());
|
|
|
+ //如果传入时间则用传入的时间做交易时间
|
|
|
+ DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
|
|
|
+ LocalDateTime localDateTime= LocalDateTime.parse(bankCheckBill.getPayTime(), dateTimeFormatter);
|
|
|
+ //记录对账信息
|
|
|
+ PayCheckbalance payCheckbalance = new PayCheckbalance();
|
|
|
+ payCheckbalance.setTranstime(localDateTime);
|
|
|
+ payCheckbalance.setWebchatid("");
|
|
|
+ payCheckbalance.setMachid(payPayAgentbranch.getMchid());
|
|
|
+ payCheckbalance.setNmachid("");
|
|
|
+ payCheckbalance.setDeviceid("");
|
|
|
+ payCheckbalance.setOrderNo(bankCheckBill.getOrderCode());
|
|
|
+ payCheckbalance.setOutTradeNo(bankCheckBill.getOrderCode());
|
|
|
+ payCheckbalance.setUserId("");
|
|
|
+ payCheckbalance.setTranstype("");
|
|
|
+ payCheckbalance.setTransstate("SUCCESS");
|
|
|
+ payCheckbalance.setPayBank("BANK");
|
|
|
+ payCheckbalance.setMoneyType("BANK");
|
|
|
+ payCheckbalance.setOrderFee(BigDecimal.ZERO);
|
|
|
+ payCheckbalance.setCashFee(BigDecimal.ZERO);
|
|
|
+ payCheckbalance.setGoodsName("HXRemotePay");
|
|
|
+ payCheckbalance.setUserData("");
|
|
|
+ payCheckbalance.setServiceCharge(BigDecimal.ZERO);
|
|
|
+ payCheckbalance.setRate("");
|
|
|
+ payCheckbalance.setTransFee(new BigDecimal(bankCheckBill.getMoney()));
|
|
|
+ payCheckbalance.setRateRemark("");
|
|
|
+ payCheckbalance.setCreateBy(BigInteger.valueOf(1));
|
|
|
+ payCheckbalance.setCreateDate(localDateTime.now());
|
|
|
+ payCheckbalance.setUpdateBy(BigInteger.valueOf(1));
|
|
|
+ payCheckbalance.setUpdateDate(localDateTime.now());
|
|
|
+ payCheckbalance.setRemarks("代收对账");
|
|
|
+ payCheckbalance.setDelFlag("0");
|
|
|
+ payCheckbalance.setState(3);
|
|
|
+ payCheckbalance.setSiteId( BigInteger.valueOf(payPayAgentbranch.getSiteId()));
|
|
|
+ payCheckbalance.setCustomerId(BigInteger.valueOf(payPayAgentbranch.getCustomerId()));
|
|
|
+ payCheckbalances.add(payCheckbalance);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(payCheckbalances.size()>0){
|
|
|
+ payCheckbalanceMapper.batchInsert(payCheckbalances);
|
|
|
+ }
|
|
|
+ bankCheckBillParm.setSuccessCount(payCheckbalances.size());
|
|
|
+ bankCheckBillParm.setCreateDate(LocalDateTime.now());
|
|
|
+ payCheckbalanceMapper.insertCheckBalanceLog(bankCheckBillParm);
|
|
|
+
|
|
|
+ return new BankCheckBillsMsg("9999",
|
|
|
+ "对账完成,对账总数:"+bankCheckBillParm.getTotalCount()+",对账成功数:"+payCheckbalances.size(),bankCheckBillList);
|
|
|
+ }
|
|
|
}
|