diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleBillServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleBillServiceImpl.java index 96219b6c3..b9d4e09bf 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleBillServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleBillServiceImpl.java @@ -1175,27 +1175,32 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS // 遍历每个发票记录,更新其收款状态 for (EmisSettleInvoiceRecord invoiceRecord : invoiceRecordList) { - String invoiceSettleBillNo = invoiceRecord.getSettleBillNo(); - if (StringUtils.isEmpty(invoiceSettleBillNo)) { + String applySeqNo = invoiceRecord.getApplySeqNo(); + if (StringUtils.isEmpty(applySeqNo)) { + continue; + } + + // 通过申请序号获取发票关联的子账单列表 + List invoiceRelList = emisSettleInvoiceRelMapper.selectListByApplySeqNo(applySeqNo); + if (CollectionUtils.isEmpty(invoiceRelList)) { + log.debug("updateInvoicePaymentStatus===>发票申请序号{}没有关联的子账单", applySeqNo); continue; } - // 解析发票对应的所有账单号(可能用逗号分隔) - String[] billNoArray = invoiceSettleBillNo.split(","); BigDecimal totalRecedMoney = BigDecimal.ZERO; - // 遍历发票对应的每个账单号,计算每个账单的实际收款金额并累加 - for (String billNo : billNoArray) { - billNo = billNo.trim(); - if (StringUtils.isEmpty(billNo)) { + // 遍历发票关联的每个子账单,获取运单已收金额并累加 + for (EmisSettleInvoiceRel invoiceRel : invoiceRelList) { + String subBillNo = invoiceRel.getBillNo(); + if (StringUtils.isEmpty(subBillNo)) { continue; } - // 通过账单号查询emis_settle_bill获取reced_money作为已收金额 - EmisSettleBill bill = selectEmisSettleBillBySettleBillNo(billNo); - BigDecimal billTotalHasPayMoney = (bill != null && bill.getRecedMoney() != null) - ? bill.getRecedMoney() - : BigDecimal.ZERO; - totalRecedMoney = totalRecedMoney.add(billTotalHasPayMoney); + + // 通过子账单号查询子账单,获取运单已收金额 + EmisSettleSubBill subBill = emisSettleSubBillMapper.selectSettleSubBillBySubBillNo(subBillNo); + if (subBill != null && subBill.getRecedMoney() != null) { + totalRecedMoney = totalRecedMoney.add(subBill.getRecedMoney()); + } } // 获取发票申请金额 @@ -1219,8 +1224,8 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS updateInvoiceRecord.setRecedMoney(totalRecedMoney); emisSettleInvoiceRecordMapper.updateEmisSettleInvoiceRecord(updateInvoiceRecord); - log.debug("updateInvoicePaymentStatus===>发票申请序号:{}, 收款状态:{}, 已收金额:{}, 申请金额:{}, 对应账单号:{}", - invoiceRecord.getApplySeqNo(), paymentStatus, totalRecedMoney, applyMoney, invoiceSettleBillNo); + log.debug("updateInvoicePaymentStatus===>发票申请序号:{}, 收款状态:{}, 已收金额:{}, 申请金额:{}", + invoiceRecord.getApplySeqNo(), paymentStatus, totalRecedMoney, applyMoney); } } catch (Exception e) { diff --git a/emis-biz/src/main/resources/mapper/EmisSettlePayRecordMapper.xml b/emis-biz/src/main/resources/mapper/EmisSettlePayRecordMapper.xml index daccddf6e..88c18f49a 100644 --- a/emis-biz/src/main/resources/mapper/EmisSettlePayRecordMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisSettlePayRecordMapper.xml @@ -575,6 +575,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and b.trade_date ]]> esb.payment_due_date and b.trade_date = ]]> DATE_SUB( esb.payment_due_date, INTERVAL (esb.credit_period-60) DAY ) ) + OR + ( + ( (esb.settle_type='2' and esb.credit_period 30) or esb.settle_type='1' ) + and b.trade_date ]]> esb.payment_due_date + ) )