From 6c4af74f317386af9ce3185d7e6358c66b29dfa4 Mon Sep 17 00:00:00 2001 From: linfso Date: Sun, 18 May 2025 23:46:43 +0800 Subject: [PATCH] md --- .../erp/web/emis/EmisCommonController.java | 2 +- .../service/IEmisSettlePayRecordService.java | 2 +- .../impl/EmisSettleBillPayLogServiceImpl.java | 77 ++++++++++++++++++- .../impl/EmisSettlePayRecordServiceImpl.java | 8 +- 4 files changed, 81 insertions(+), 8 deletions(-) diff --git a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisCommonController.java b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisCommonController.java index 8cddd04f9..1c158eaad 100644 --- a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisCommonController.java +++ b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisCommonController.java @@ -125,7 +125,7 @@ public class EmisCommonController extends EmisBaseController * 在线支付回调 * @param method * @param data - * @param signType + * @param sign_type * @param sign * @return */ diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisSettlePayRecordService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisSettlePayRecordService.java index d273e03d4..247c74241 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisSettlePayRecordService.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisSettlePayRecordService.java @@ -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; /** * 修改账单收退款记录 diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleBillPayLogServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleBillPayLogServiceImpl.java index 48e58c0c2..7f86bf549 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleBillPayLogServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleBillPayLogServiceImpl.java @@ -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 payRelList=new ArrayList(); + + EmisSettleSubBill qParam = new EmisSettleSubBill(); + qParam.setSettleBillNo(emisSettleBillPayLog.getSettleBillNo()); + List 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); diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettlePayRecordServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettlePayRecordServiceImpl.java index 6089e1f41..9e7692aa7 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettlePayRecordServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettlePayRecordServiceImpl.java @@ -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); // 退款时支付金额记录负值