This commit is contained in:
linfso 2025-05-18 23:46:43 +08:00
parent befe309816
commit 6c4af74f31
4 changed files with 81 additions and 8 deletions

View File

@ -125,7 +125,7 @@ public class EmisCommonController extends EmisBaseController
* 在线支付回调
* @param method
* @param data
* @param signType
* @param sign_type
* @param sign
* @return
*/

View File

@ -60,7 +60,7 @@ public interface IEmisSettlePayRecordService
* @param emisSettlePayRecord 账单收退款记录
* @return 结果
*/
public int insertEmisSettlePayRecord(EmisSettlePayRecord emisSettlePayRecord) throws EmisBizError;
public int insertEmisSettlePayRecord(EmisSettlePayRecord emisSettlePayRecord,String payId) throws EmisBizError;
/**
* 修改账单收退款记录

View File

@ -12,6 +12,7 @@ package com.xdadan.erp.emis.service.impl;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -23,17 +24,20 @@ import com.xdadan.erp.common.core.pay.vitepay.sdk.ApiRes;
import com.xdadan.erp.common.core.pay.vitepay.sdk.Config;
import com.xdadan.erp.common.core.pay.vitepay.sdk.VitePayOnlineSdk;
import com.xdadan.erp.common.utils.idgen.SnowflakeIdUtils;
import com.xdadan.erp.emis.domain.EmisSettleBill;
import com.xdadan.erp.emis.domain.*;
import com.xdadan.erp.emis.domain.enumtype.EmisBizErrorType;
import com.xdadan.erp.emis.domain.exception.EmisBizError;
import com.xdadan.erp.emis.mapper.EmisSettleBillMapper;
import com.xdadan.erp.emis.mapper.EmisSettlePayRelMapper;
import com.xdadan.erp.emis.mapper.EmisSettleSubBillMapper;
import com.xdadan.erp.emis.service.IEmisSettlePayRecordService;
import com.xdadan.erp.emis.utils.WaybillHelper;
import com.xdadan.erp.system.domain.SysAccount;
import com.xdadan.erp.system.domain.SysPayOrder;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.xdadan.erp.emis.domain.EmisSettleBillPayLog;
import com.xdadan.erp.emis.mapper.EmisSettleBillPayLogMapper;
import com.xdadan.erp.emis.service.IEmisSettleBillPayLogService;
@ -53,6 +57,16 @@ public class EmisSettleBillPayLogServiceImpl implements IEmisSettleBillPayLogSer
@Autowired
private EmisSettleBillMapper emisSettleBillMapper;
@Autowired
private IEmisSettlePayRecordService emisSettlePayRecordService;
@Autowired
private EmisSettlePayRelMapper emisSettlePayRelMapper;
@Autowired
private EmisSettleSubBillMapper emisSettleSubBillMapper;
/**
* 查询支付订单表
*
@ -224,6 +238,7 @@ public class EmisSettleBillPayLogServiceImpl implements IEmisSettleBillPayLogSer
EmisSettleBillPayLog emisSettleBillPayLog=emisSettleBillPayLogMapper.selectEmisSettleBillPayLogByPayId(payId);
if(emisSettleBillPayLog == null){
throw new EmisBizError(EmisBizErrorType.FAIL,"支付单不存在");
}
@ -241,6 +256,19 @@ public class EmisSettleBillPayLogServiceImpl implements IEmisSettleBillPayLogSer
String status=rstObj.getString("status");
String errMsg=rstObj.getString("err_msg");
if("20".equals(status)){
EmisSettleBill oldSettleBill=emisSettleBillMapper.selectSettleBillBySettleBillNo(emisSettleBillPayLog.getSettleBillNo());
if(oldSettleBill==null){
throw new EmisBizError(EmisBizErrorType.FAIL,"账单不存在");
}
String payMan="";
// 现金账单支付人为寄件公司,月结账单支付人为客户
if("1".equals(oldSettleBill.getSettleType())){
payMan=oldSettleBill.getCustomerName();
}else{
payMan=oldSettleBill.getCustName();
}
// 更新状态
emisSettleBillPayLog.setPaid(1);
emisSettleBillPayLog.setStatus(20);
@ -248,8 +276,49 @@ public class EmisSettleBillPayLogServiceImpl implements IEmisSettleBillPayLogSer
emisSettleBillPayLog.setPaySuccTime(new Date());
emisSettleBillPayLogMapper.updateEmisSettleBillPayLog(emisSettleBillPayLog);
// 获取支付账单,核销账单
emisSettleBillPayLogMapper.selectEmisSettleBillPayLogByPayId(payId);
// 获取支付账单,转为为真实支付单
EmisSettlePayRecord emisSettlePayRecord=new EmisSettlePayRecord();
emisSettlePayRecord.setSettleBillNo(emisSettleBillPayLog.getSettleBillNo());
emisSettlePayRecord.setPayId(emisSettleBillPayLog.getPayId());
emisSettlePayRecord.setPayType("7"); // 在线支付(微信)
emisSettlePayRecord.setPayMan(payMan);
emisSettlePayRecord.setPayMoney(new BigDecimal(emisSettleBillPayLog.getAmount()).divide(new BigDecimal(100)));
emisSettlePayRecord.setTradeDate(emisSettleBillPayLog.getPaySuccTime());
emisSettlePayRecord.setRecType("1");
emisSettlePayRecord.setPayStatus("2");
emisSettlePayRecord.setSettleType(oldSettleBill.getSettleType());
emisSettlePayRecord.setRecManCode("1");
emisSettlePayRecord.setCustomerCode(oldSettleBill.getCustomerCode());
emisSettlePayRecord.setCustomerName(oldSettleBill.getCustomerName());
emisSettlePayRecord.setCreateBy("1");
emisSettlePayRecord.setCreateTime(new Date());
// 设置为支付的单子
List<EmisSettlePayRel> payRelList=new ArrayList<EmisSettlePayRel>();
EmisSettleSubBill qParam = new EmisSettleSubBill();
qParam.setSettleBillNo(emisSettleBillPayLog.getSettleBillNo());
List<EmisSettleSubBill> listSubBill=emisSettleSubBillMapper.selectEmisSettleSubBillList(qParam);
if(!CollectionUtils.isEmpty(listSubBill)){
for (EmisSettleSubBill itemSubBill:listSubBill) {
BigDecimal hasPayMoney = itemSubBill.getRecedMoney();
if(hasPayMoney==null){
hasPayMoney=BigDecimal.ZERO;
}
BigDecimal noPayMoney=itemSubBill.getBillFee().subtract(hasPayMoney);
if(noPayMoney.compareTo(BigDecimal.ZERO)>0){
EmisSettlePayRel payRel = new EmisSettlePayRel();
payRel.setPayId(emisSettleBillPayLog.getPayId());
payRel.setBillNo(itemSubBill.getBillNo());
payRel.setPayMoney(noPayMoney);
payRelList.add(payRel);
}
}
}
emisSettlePayRecord.setPayRelList(payRelList);
emisSettlePayRecordService.insertEmisSettlePayRecord(emisSettlePayRecord,emisSettleBillPayLog.getPayId());
}else if("10".equals(status)){
emisSettleBillPayLog.setPaid(0);

View File

@ -130,7 +130,7 @@ public class EmisSettlePayRecordServiceImpl extends EmisBaseService implements I
* @return 结果
*/
@Override
public int insertEmisSettlePayRecord(EmisSettlePayRecord emisSettlePayRecord) throws EmisBizError {
public int insertEmisSettlePayRecord(EmisSettlePayRecord emisSettlePayRecord,String payId) throws EmisBizError {
if(StringUtils.isEmpty(emisSettlePayRecord.getSettleBillNo())){
throw new EmisBizError(EmisBizErrorType.FAIL,"账单编号不能为空");
@ -165,7 +165,11 @@ public class EmisSettlePayRecordServiceImpl extends EmisBaseService implements I
}
// 不重复的 id流水号
String payId= WaybillHelper.genPayId();
// 如果支付单是空的则生成新的支付单
if(StringUtils.isEmpty(payId)) {
payId = WaybillHelper.genPayId();
}
emisSettlePayRecord.setPayId(payId);
// 退款时支付金额记录负值