From 08f1f2e0c81dee6c54a3cc7f5ba8e85c0e4f8bb6 Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Mon, 3 Nov 2025 16:50:15 +0800 Subject: [PATCH] =?UTF-8?q?demand:=20=20=20TMS=E7=B3=BB=E7=BB=9F=20-=20?= =?UTF-8?q?=E5=AE=A2=E6=88=B7=E8=B4=A6=E5=8D=95=E7=AE=A1=E7=90=86=20-=20?= =?UTF-8?q?=E7=8E=B0=E9=87=91=E8=B4=A6=E5=8D=95=E6=A0=B8=E9=94=80/?= =?UTF-8?q?=E6=9C=88=E7=BB=93=E8=B4=A6=E5=8D=95=E6=A0=B8=E9=94=80=20-=20?= =?UTF-8?q?=E7=99=BB=E8=AE=B0=E6=94=B6=E6=AC=BE=E6=97=B6=EF=BC=9A=E7=90=86?= =?UTF-8?q?=E8=B5=94=E9=87=91=E9=A2=9D=E6=9C=89=E5=A1=AB=E5=86=99=EF=BC=8C?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E6=88=90=E5=8A=9F=E5=90=8E=20=E8=B4=A6?= =?UTF-8?q?=E5=8D=95=E5=AF=B9=E5=BA=94=E7=9A=84=E7=90=86=E8=B5=94=E9=87=91?= =?UTF-8?q?=E9=A2=9D=E5=92=8C=E6=94=B6=E6=AC=BE=E7=8A=B6=E6=80=81=E6=9C=AA?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=20=20TMS=E7=B3=BB=E7=BB=9F=20-=20=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E8=B4=A6=E5=8D=95=E7=AE=A1=E7=90=86=20-=20=E7=8E=B0?= =?UTF-8?q?=E9=87=91=E8=B4=A6=E5=8D=95=E6=A0=B8=E9=94=80/=E6=9C=88?= =?UTF-8?q?=E7=BB=93=E8=B4=A6=E5=8D=95=E6=A0=B8=E9=94=80=20-=20=E6=94=B6?= =?UTF-8?q?=E6=AC=BE/=E9=80=80=E6=AC=BE=E5=90=8E=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=B4=A6=E5=8D=95=E5=AF=B9=E5=BA=94=E5=8F=91?= =?UTF-8?q?=E7=A5=A8=E7=9A=84=E6=94=B6=E6=AC=BE=E7=8A=B6=E6=80=81=E3=80=81?= =?UTF-8?q?=E5=B7=B2=E6=94=B6=E9=87=91=E9=A2=9D=E3=80=82=20=20=20TMS?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=20-=20=E5=AE=A2=E6=88=B7=E8=B4=A6=E5=8D=95?= =?UTF-8?q?=E7=AE=A1=E7=90=86=20-=20=E4=B8=9A=E5=8A=A1=E5=BC=80=E7=A5=A8?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=20-=20=E7=94=9F=E6=88=90=E5=8F=91=E7=A5=A8?= =?UTF-8?q?=E6=97=B6=E6=A0=B9=E6=8D=AE=E5=8F=91=E7=A5=A8=E5=85=B3=E8=81=94?= =?UTF-8?q?=E7=9A=84=E8=B4=A6=E5=8D=95=E8=87=AA=E5=8A=A8=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=E7=94=9F=E6=88=90=E5=8F=91=E7=A5=A8=E7=9A=84=E6=94=B6=E6=AC=BE?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E3=80=81=E5=B7=B2=E6=94=B6=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E3=80=82=20committer:=20heyu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/EmisSettleBillServiceImpl.java | 235 ++++++++++++------ .../EmisSettleInvoiceRecordServiceImpl.java | 33 ++- .../impl/EmisSettlePayRecordServiceImpl.java | 22 +- .../mapper/EmisSettleInvoiceRecordMapper.xml | 4 + 4 files changed, 200 insertions(+), 94 deletions(-) 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 17408aef7..6df1c0373 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 @@ -1,10 +1,10 @@ - /** + /** * @Project: emis * @Title: EmisSettleBillServiceImpl.java * @author linfso * @date 2024-07-03 18:54:51 * @Copyright: ShangHai Duta 2022 All rights reserved. - * @version v1.0 + * @version v1.0 * @Description:

结算总账单 实体类

*/ @@ -58,7 +58,7 @@ import javax.servlet.http.HttpServletResponse; /** * 结算总账单Service业务层处理 - * + * * @author linfso * @date 2024-07-03 18:54:51 */ @@ -73,6 +73,9 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS @Autowired private EmisSettleSubBillMapper emisSettleSubBillMapper; + @Autowired + private EmisSettleInvoiceRecordMapper emisSettleInvoiceRecordMapper; + @Autowired private EmisSettleInvoiceRelMapper emisSettleInvoiceRelMapper; @@ -103,7 +106,7 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS /** * 查询结算总账单 - * + * * @param id 结算总账单主键 * @return 结算总账单 */ @@ -158,7 +161,7 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS /** * 查询结算总账单列表 - * + * * @param emisSettleBill 结算总账单 * @return 结算总账单 */ @@ -170,8 +173,8 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS /** * 检查是否重复 - * - * @param emisSettleBill + * + * @param emisSettleBill * @return 数量 */ @Override @@ -238,7 +241,7 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS /** * 新增结算总账单 - * + * * @param emisSettleBill 结算总账单 * @return 结果 */ @@ -836,55 +839,59 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS /** * 重算账单收款状态 + * * @param settleBillNo * @return */ @Override - public int reCalcSettleBillPayStatus(String settleBillNo){ + public int reCalcSettleBillPayStatus(String settleBillNo) { EmisSettleBill oldBill = getSettleBillBySettleBillNo(settleBillNo); // 获取收款记录 - List payRecordList=emisSettlePayRecordMapper.selectSettlePayRecordListBySettleBillNo(settleBillNo); + List payRecordList = emisSettlePayRecordMapper + .selectSettlePayRecordListBySettleBillNo(settleBillNo); // 计算已收款金额 BigDecimal totalHasPayMoney = BigDecimal.ZERO; - // 抵扣金额 + // 理赔金额 BigDecimal satisfyMoney = BigDecimal.ZERO; - /* allowance_money */ + /* 折让 */ BigDecimal allowanceMoney = BigDecimal.ZERO; - /* deduction_money */ + /* 折扣 */ BigDecimal deductionMoney = BigDecimal.ZERO; - /* other_money */ + /* 其他 */ BigDecimal otherMoney = BigDecimal.ZERO; // refund_money BigDecimal refundMoney = BigDecimal.ZERO; - log.debug("reCalcSettleBillPayStatus===>应收:{}",oldBill.getRecMoney()); + log.debug("reCalcSettleBillPayStatus===>应收:{}", oldBill.getRecMoney()); - for(EmisSettlePayRecord item:payRecordList){ + for (EmisSettlePayRecord item : payRecordList) { totalHasPayMoney = totalHasPayMoney.add(item.getPayMoney()); satisfyMoney = satisfyMoney.add(item.getSatisfyMoney() == null ? BigDecimal.ZERO : item.getSatisfyMoney()); - allowanceMoney = allowanceMoney.add(item.getAllowanceMoney() == null ? BigDecimal.ZERO : item.getAllowanceMoney()); - deductionMoney = deductionMoney.add(item.getDeductionMoney() == null ? BigDecimal.ZERO : item.getDeductionMoney()); + allowanceMoney = allowanceMoney + .add(item.getAllowanceMoney() == null ? BigDecimal.ZERO : item.getAllowanceMoney()); + deductionMoney = deductionMoney + .add(item.getDeductionMoney() == null ? BigDecimal.ZERO : item.getDeductionMoney()); otherMoney = otherMoney.add(item.getOtherMoney() == null ? BigDecimal.ZERO : item.getOtherMoney()); - if("2".equals(item.getRecType())) { + if ("2".equals(item.getRecType())) { refundMoney = refundMoney.add(item.getRefundMoney() == null ? BigDecimal.ZERO : item.getRefundMoney()); } } // 更新运单的收款状态 - if(totalHasPayMoney.compareTo(BigDecimal.ZERO) > 0){ + if (totalHasPayMoney.compareTo(BigDecimal.ZERO) > 0) { BigDecimal totalMoney = BigDecimal.ZERO; // 更新运单收款记录 - List listRel=emisSettlePayRelMapper.selectHasPayMapList(settleBillNo); - if(!CollectionUtils.isEmpty(listRel)) { + List listRel = emisSettlePayRelMapper.selectHasPayMapList(settleBillNo); + if (!CollectionUtils.isEmpty(listRel)) { - for(Map item:listRel){ + for (Map item : listRel) { - String billNo= MapUtils.getString(item,"billNo",null); - if(StringUtils.isEmpty(billNo)){ + String billNo = MapUtils.getString(item, "billNo", null); + if (StringUtils.isEmpty(billNo)) { continue; } @@ -895,24 +902,24 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS EmisWaybill emisWaybill = new EmisWaybill(); emisWaybill.setBillCode(subBill.getBillCode()); - String paymentStatusDesc=""; + String paymentStatusDesc = ""; - if( sumMoney.compareTo(BigDecimal.ZERO) == 0 ){ + if (sumMoney.compareTo(BigDecimal.ZERO) == 0) { emisWaybill.setPaymentStatus("0"); - paymentStatusDesc="未付款"; - }else{ + paymentStatusDesc = "未付款"; + } else { if (sumMoney.compareTo(subBill.getBillFee()) >= 0) { - paymentStatusDesc="已付款"; + paymentStatusDesc = "已付款"; emisWaybill.setPaymentStatus("1"); } else { - paymentStatusDesc="部分付款"; + paymentStatusDesc = "部分付款"; emisWaybill.setPaymentStatus("2"); } } emisWaybillMapper.updatePayedStatus(emisWaybill); - EmisSettleSubBill updEmisSettleSubBill=new EmisSettleSubBill(); + EmisSettleSubBill updEmisSettleSubBill = new EmisSettleSubBill(); updEmisSettleSubBill.setPaymentStatus(emisWaybill.getPaymentStatus()); updEmisSettleSubBill.setRecedMoney(sumMoney); updEmisSettleSubBill.setBillCode(subBill.getBillCode()); @@ -924,22 +931,21 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS WaybillOperLogType.SITE_PAYMENT_STATUS_CHANGE, null, null, - "收款状态变更["+paymentStatusDesc+"]" - ); + "收款状态变更[" + paymentStatusDesc + "]"); // 计算占用 -// try { -// EmisWaybill oldBillA = getWaybillByBillCode(subBill.getBillCode()); -// reCalcUseQuotaCredit(oldBillA,null); -// } catch (EmisBizError emisBizError) { -// emisBizError.printStackTrace(); -// } + // try { + // EmisWaybill oldBillA = getWaybillByBillCode(subBill.getBillCode()); + // reCalcUseQuotaCredit(oldBillA,null); + // } catch (EmisBizError emisBizError) { + // emisBizError.printStackTrace(); + // } } // 全部收款金额 BigDecimal totalAllPayMoney = BigDecimal.ZERO; // 收款金额 - totalAllPayMoney=totalMoney + totalAllPayMoney = totalMoney .add(satisfyMoney) .add(allowanceMoney) .add(deductionMoney) @@ -956,19 +962,18 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS newBill.setRefundMoney(refundMoney); // 更新账单收款状态 收款金额 - log.debug("reCalcSettleBillPayStatus===>收款金额:{},应收:{}",totalMoney,oldBill.getRecMoney()); + log.debug("reCalcSettleBillPayStatus===>收款金额:{},应收:{}", totalMoney, oldBill.getRecMoney()); - if( totalAllPayMoney.compareTo(BigDecimal.ZERO) == 0 ){ + if (totalAllPayMoney.compareTo(BigDecimal.ZERO) == 0) { newBill.setPaymentStatus("0"); emisSettleBillMapper.updateEmisSettleBill(newBill); - }else{ - int rstDif=totalAllPayMoney.compareTo(oldBill.getRecMoney()); - if( rstDif >= 0 ){ + } else { + int rstDif = totalAllPayMoney.compareTo(oldBill.getRecMoney()); + if (rstDif >= 0) { // 已收款 newBill.setPaymentStatus("1"); emisSettleBillMapper.updateEmisSettleBill(newBill); - } - else{ + } else { // 部分收款 newBill.setPaymentStatus("2"); emisSettleBillMapper.updateEmisSettleBill(newBill); @@ -977,18 +982,18 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS } // 如果没有收款记录则设置账单为未收款 - else{ + else { // 全部收款金额 BigDecimal totalAllPayMoney = BigDecimal.ZERO; // 收款金额-退款金额 - totalAllPayMoney=totalMoney + totalAllPayMoney = totalMoney .add(satisfyMoney) .add(allowanceMoney) .add(deductionMoney) .add(otherMoney); -// .subtract(refundMoney); + // .subtract(refundMoney); EmisSettleBill newBill = new EmisSettleBill(); newBill.setId(oldBill.getId()); @@ -1001,18 +1006,17 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS newBill.setRefundMoney(refundMoney); // 更新账单收款状态 收款金额 - log.debug("reCalcSettleBillPayStatus===>收款金额:{},应收:{}",totalMoney,oldBill.getRecMoney()); - if( totalAllPayMoney.compareTo(BigDecimal.ZERO) == 0 ){ + log.debug("reCalcSettleBillPayStatus===>收款金额:{},应收:{}", totalMoney, oldBill.getRecMoney()); + if (totalAllPayMoney.compareTo(BigDecimal.ZERO) == 0) { newBill.setPaymentStatus("0"); emisSettleBillMapper.updateEmisSettleBill(newBill); - }else{ - int rstDif=totalAllPayMoney.compareTo(oldBill.getRecMoney()); - if( rstDif >= 0 ){ + } else { + int rstDif = totalAllPayMoney.compareTo(oldBill.getRecMoney()); + if (rstDif >= 0) { // 已收款 newBill.setPaymentStatus("1"); emisSettleBillMapper.updateEmisSettleBill(newBill); - } - else{ + } else { // 部分收款 newBill.setPaymentStatus("2"); emisSettleBillMapper.updateEmisSettleBill(newBill); @@ -1022,9 +1026,9 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS // 未收款则更新运单状态未收款状态 List list = emisBaseService.selectSubBillListBySettleBillNo(settleBillNo); if (!CollectionUtils.isEmpty(list)) { - for (EmisSettleSubBill subBill:list) { + for (EmisSettleSubBill subBill : list) { // 已收款 - if("1".equals(newBill.getPaymentStatus())) { + if ("1".equals(newBill.getPaymentStatus())) { // 更新子账单收款状态 EmisSettleSubBill updEmisSettleSubBill = new EmisSettleSubBill(); updEmisSettleSubBill.setPaymentStatus("1"); @@ -1039,7 +1043,7 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS emisWaybillMapper.updatePayedStatus(emisWaybill); } // 未收款 - else{ + else { // 更新子账单收款状态 EmisSettleSubBill updEmisSettleSubBill = new EmisSettleSubBill(); updEmisSettleSubBill.setPaymentStatus("0"); @@ -1058,20 +1062,19 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS } } - } - else{ + } else { // 全部收款金额 BigDecimal totalAllPayMoney = BigDecimal.ZERO; BigDecimal totalMoney = BigDecimal.ZERO; // 收款金额 - totalAllPayMoney=totalMoney + totalAllPayMoney = totalMoney .add(satisfyMoney) .add(allowanceMoney) .add(deductionMoney) .add(otherMoney); -// .subtract(refundMoney); + // .subtract(refundMoney); EmisSettleBill newBill = new EmisSettleBill(); newBill.setId(oldBill.getId()); @@ -1084,32 +1087,30 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS newBill.setRefundMoney(refundMoney); // 更新账单收款状态 收款金额 - log.debug("reCalcSettleBillPayStatus===>收款金额:{},应收:{}",totalMoney,oldBill.getRecMoney()); - if( totalAllPayMoney.compareTo(BigDecimal.ZERO) == 0 ){ + log.debug("reCalcSettleBillPayStatus===>收款金额:{},应收:{}", totalMoney, oldBill.getRecMoney()); + if (totalAllPayMoney.compareTo(BigDecimal.ZERO) == 0) { newBill.setPaymentStatus("0"); emisSettleBillMapper.updateEmisSettleBill(newBill); - }else{ - int rstDif=totalAllPayMoney.compareTo(oldBill.getRecMoney()); - if( rstDif >= 0 ){ + } else { + int rstDif = totalAllPayMoney.compareTo(oldBill.getRecMoney()); + if (rstDif >= 0) { // 已收款 newBill.setPaymentStatus("1"); emisSettleBillMapper.updateEmisSettleBill(newBill); - } - else{ + } else { // 部分收款 newBill.setPaymentStatus("2"); emisSettleBillMapper.updateEmisSettleBill(newBill); } } - // 未收款则更新运单状态未收款状态 List list = emisBaseService.selectSubBillListBySettleBillNo(settleBillNo); if (!CollectionUtils.isEmpty(list)) { - for (EmisSettleSubBill subBill:list) { + for (EmisSettleSubBill subBill : list) { // 已收款 - if("1".equals(newBill.getPaymentStatus())) { + if ("1".equals(newBill.getPaymentStatus())) { // 更新子账单收款状态 EmisSettleSubBill updEmisSettleSubBill = new EmisSettleSubBill(); updEmisSettleSubBill.setPaymentStatus("1"); @@ -1124,7 +1125,7 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS emisWaybillMapper.updatePayedStatus(emisWaybill); } // 未收款 - else{ + else { // 更新子账单收款状态 EmisSettleSubBill updEmisSettleSubBill = new EmisSettleSubBill(); updEmisSettleSubBill.setPaymentStatus("0"); @@ -1143,7 +1144,81 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS } } - return 1; + // 更新发票收款状态 + updateInvoicePaymentStatus(settleBillNo); + + return 1; + } + + /** + * 更新发票收款状态(发票不考虑理赔金额等) + * + * @param settleBillNo 账单号 + */ + private void updateInvoicePaymentStatus(String settleBillNo) { + try { + // 获取所有包含当前账单号的发票记录(发票可能对应多个账单号,用逗号分隔) + List invoiceRecordList = emisSettleInvoiceRecordMapper + .selectInvoiceRecordListBySettleBillNo(settleBillNo); + if (CollectionUtils.isEmpty(invoiceRecordList)) { + log.debug("updateInvoicePaymentStatus===>账单{}没有发票记录", settleBillNo); + return; + } + + // 遍历每个发票记录,更新其收款状态 + for (EmisSettleInvoiceRecord invoiceRecord : invoiceRecordList) { + String invoiceSettleBillNo = invoiceRecord.getSettleBillNo(); + if (StringUtils.isEmpty(invoiceSettleBillNo)) { + continue; + } + + // 解析发票对应的所有账单号(可能用逗号分隔) + String[] billNoArray = invoiceSettleBillNo.split(","); + BigDecimal totalRecedMoney = BigDecimal.ZERO; + + // 遍历发票对应的每个账单号,计算每个账单的实际收款金额并累加 + for (String billNo : billNoArray) { + billNo = billNo.trim(); + if (StringUtils.isEmpty(billNo)) { + 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); + } + + // 获取发票申请金额 + BigDecimal applyMoney = invoiceRecord.getApplyMoney() != null ? invoiceRecord.getApplyMoney() + : BigDecimal.ZERO; + + // 计算收款状态 + String paymentStatus; + if (totalRecedMoney.compareTo(BigDecimal.ZERO) == 0) { + paymentStatus = "0"; // 未付款 + } else if (totalRecedMoney.compareTo(applyMoney) >= 0) { + paymentStatus = "1"; // 已付款 + } else { + paymentStatus = "2"; // 部分付款 + } + + // 更新发票记录收款状态 + EmisSettleInvoiceRecord updateInvoiceRecord = new EmisSettleInvoiceRecord(); + updateInvoiceRecord.setId(invoiceRecord.getId()); + updateInvoiceRecord.setPaymentStatus(paymentStatus); + updateInvoiceRecord.setRecedMoney(totalRecedMoney); + emisSettleInvoiceRecordMapper.updateEmisSettleInvoiceRecord(updateInvoiceRecord); + + log.debug("updateInvoicePaymentStatus===>发票申请序号:{}, 收款状态:{}, 已收金额:{}, 申请金额:{}, 对应账单号:{}", + invoiceRecord.getApplySeqNo(), paymentStatus, totalRecedMoney, applyMoney, invoiceSettleBillNo); + } + + } catch (Exception e) { + log.error("updateInvoicePaymentStatus===>更新发票收款状态失败,账单号: {}", settleBillNo, e); + // 不抛出异常,避免影响主流程 + } } @Override public void exportSeaWayBill(HttpServletResponse response, EmisSettleBill emisSettleBill) { @@ -1414,7 +1489,7 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS /** * 修改结算总账单 - * + * * @param emisSettleBill 结算总账单 * @return 结果 */ @@ -1426,7 +1501,7 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS /** * 批量删除结算总账单 - * + * * @param ids 需要删除的结算总账单主键 * @return 结果 */ @@ -1446,7 +1521,7 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS /** * 删除结算总账单信息 - * + * * @param id 结算总账单主键 * @return 结果 */ diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleInvoiceRecordServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleInvoiceRecordServiceImpl.java index b754cadd3..27fc06f9f 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleInvoiceRecordServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisSettleInvoiceRecordServiceImpl.java @@ -33,6 +33,7 @@ import org.springframework.stereotype.Service; import com.xdadan.erp.emis.mapper.EmisSettleInvoiceRecordMapper; import com.xdadan.erp.emis.service.IEmisSettleInvoiceRecordService; import org.springframework.transaction.annotation.Transactional; +import com.xdadan.erp.emis.mapper.EmisSettlePayRecordMapper; /** * 开票记录表Service业务层处理 @@ -62,6 +63,9 @@ public class EmisSettleInvoiceRecordServiceImpl extends EmisBaseService implemen @Autowired private EmisCustomerInvoiceInfoMapper emisCustomerInvoiceInfoMapper; + @Autowired + private EmisSettlePayRecordMapper emisSettlePayRecordMapper; + /** * 查询开票记录表 * @@ -192,6 +196,29 @@ public class EmisSettleInvoiceRecordServiceImpl extends EmisBaseService implemen emisSettleInvoiceRecord.setApplyManCode(getCurrentUser().getEmpCode()); emisSettleInvoiceRecord.setApplySiteCode(getCurrentUser().getOwnerSiteCode()); emisSettleInvoiceRecord.setApplyDate(new Date()); + // 计算发票已收金额与收款状态 + BigDecimal totalRecedMoney = BigDecimal.ZERO; + for (String billNoItem : settBillNoArr) { + String billNoTrim = billNoItem == null ? null : billNoItem.trim(); + if (StringUtils.isEmpty(billNoTrim)) { + continue; + } + // 通过账单号查询emis_settle_bill获取reced_money作为已收金额 + EmisSettleBill bill = getSettleBillBySettleBillNo(billNoTrim); + BigDecimal billRecedMoney = (bill != null && bill.getRecedMoney() != null) ? bill.getRecedMoney() + : BigDecimal.ZERO; + totalRecedMoney = totalRecedMoney.add(billRecedMoney); + } + emisSettleInvoiceRecord.setRecedMoney(totalRecedMoney); + String paymentStatus; + if (totalRecedMoney.compareTo(BigDecimal.ZERO) == 0) { + paymentStatus = "0"; // 未付款 + } else if (totalRecedMoney.compareTo(emisSettleInvoiceRecord.getApplyMoney()) >= 0) { + paymentStatus = "1"; // 已付款 + } else { + paymentStatus = "2"; // 部分付款 + } + emisSettleInvoiceRecord.setPaymentStatus(paymentStatus); // 插入开票记录 emisSettleInvoiceRecordMapper.insertEmisSettleInvoiceRecord(emisSettleInvoiceRecord); @@ -248,7 +275,7 @@ public class EmisSettleInvoiceRecordServiceImpl extends EmisBaseService implemen /** * 中心驳回 - * + * * @param inputObj * @return * @throws EmisBizError @@ -289,7 +316,7 @@ public class EmisSettleInvoiceRecordServiceImpl extends EmisBaseService implemen /** * 审核通过 - * + * * @param inputObj * @return * @throws EmisBizError @@ -338,7 +365,7 @@ public class EmisSettleInvoiceRecordServiceImpl extends EmisBaseService implemen /** * 根据运单号列表查询开票记录 - * + * * @param billCodes 运单号列表 * @return 开票记录列表 */ 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 7e67b8ecb..ecaf16986 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 @@ -497,8 +497,8 @@ public class EmisSettlePayRecordServiceImpl extends EmisBaseService implements I for (EmisSettlePayInvoiceRel itemSettlePayInvoiceRel : emisSettlePayRecord.getPayInvoiceRelList()) { itemSettlePayInvoiceRel.setPayId(payId); emisSettlePayInvoiceRelMapper.insertEmisSettlePayInvoiceRel(itemSettlePayInvoiceRel); - // 更新收款状态 - emisSettleInvoiceRecordMapper.updateHasPayByApplySeqNo(itemSettlePayInvoiceRel.getApplySeqNo()); +// // 更新收款状态 +// emisSettleInvoiceRecordMapper.updateHasPayByApplySeqNo(itemSettlePayInvoiceRel.getApplySeqNo()); } } @@ -520,16 +520,16 @@ public class EmisSettlePayRecordServiceImpl extends EmisBaseService implements I // 插入数据 emisSettlePayRecordMapper.insertEmisSettlePayRecord(emisSettlePayRecord); - // // 重新计算账单收款信息 - // for (int i = 0; i < settleBillNoArr.size(); i++) { - // String settleBillNo = settleBillNoArr.get(i); - // if (!StringUtils.isEmpty(settleBillNo)) { - // emisSettleBillService.reCalcSettleBillPayStatus(settleBillNo); - // } - // } + // 重新计算账单收款信息 + for (int i = 0; i < settleBillNoArr.size(); i++) { + String settleBillNo = settleBillNoArr.get(i); + if (!StringUtils.isEmpty(settleBillNo)) { + emisSettleBillService.reCalcSettleBillPayStatus(settleBillNo); + } + } - // 处理部分收款逻辑 - 更新各个维度的收款状态 - updatePartialPaymentStatus(emisSettlePayRecord, settleBillNoArr); +// // 处理部分收款逻辑 - 更新各个维度的收款状态 +// updatePartialPaymentStatus(emisSettlePayRecord, settleBillNoArr); return 1; } diff --git a/emis-biz/src/main/resources/mapper/EmisSettleInvoiceRecordMapper.xml b/emis-biz/src/main/resources/mapper/EmisSettleInvoiceRecordMapper.xml index ca2f0fac0..d2f24d126 100644 --- a/emis-biz/src/main/resources/mapper/EmisSettleInvoiceRecordMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisSettleInvoiceRecordMapper.xml @@ -374,6 +374,8 @@ update_time, create_site, update_site, + payment_status, + reced_money, #{applySeqNo}, @@ -428,6 +430,8 @@ #{updateTime}, #{createSite}, #{updateSite}, + #{paymentStatus}, + #{recedMoney},