From bd54ba7f9919913ee62071b8372300e826deda48 Mon Sep 17 00:00:00 2001 From: linfso Date: Wed, 12 Mar 2025 14:07:15 +0800 Subject: [PATCH] md --- .../erp/emis/service/EmisBaseService.java | 151 +++++++++++------- .../service/impl/EmisWaybillServiceImpl.java | 18 ++- 2 files changed, 105 insertions(+), 64 deletions(-) diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java index 44ec0b586..585437faa 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java @@ -237,28 +237,12 @@ public class EmisBaseService { if(!CollectionUtils.isEmpty(listCreditCustomer)){ EmisCreditCustomer item0=listCreditCustomer.get(0); BigDecimal preBalance=item0.getCreditMoney().subtract(item0.getUseMoney()); - if(emisWaybill.getFreight().compareTo(preBalance) == 1 ){ // 提示异常 throw new EmisBizError(EmisBizErrorType.FAIL, "超出信用额度"); }else{ - - // 当前余额,变动后余额,变动金额 - BigDecimal backBalance=preBalance.subtract(emisWaybill.getFreight()); + // 加入额度占用 BigDecimal changeMoney=emisWaybill.getFreight(); - - // 扣减额度,插入扣额度数据明细 - EmisCreditCustomerRecord itemRecord=new EmisCreditCustomerRecord(); - itemRecord.setAccCode(item0.getAccCode()); - itemRecord.setCustomerCode(item0.getCustomerCode()); - itemRecord.setBillCode(emisWaybill.getBillCode()); - itemRecord.setPreBalance(preBalance); - itemRecord.setChangeMoney(emisWaybill.getFreight()); - itemRecord.setChangeType("2"); - itemRecord.setBackBalance(backBalance); - emisCreditCustomerRecordMapper.insertEmisCreditCustomerRecord(itemRecord); - - // 更新使用额度 emisCreditCustomerMapper.changeBalance(item0.getAccCode(),changeMoney); } } @@ -280,22 +264,8 @@ public class EmisBaseService { // 提示异常 throw new EmisBizError(EmisBizErrorType.FAIL, "超出信用额度"); }else{ - - // 当前余额,变动后余额,变动金额 - BigDecimal backBalance=preBalance.subtract(emisWaybill.getFreight()); - BigDecimal changeMoney=emisWaybill.getFreight(); - // 扣减额度,插入扣额度数据明细 - EmisCreditSalesmenRecord itemRecord=new EmisCreditSalesmenRecord(); - itemRecord.setAccCode(item0.getAccCode()); - itemRecord.setSalesmen(item0.getSalesmen()); - itemRecord.setBillCode(emisWaybill.getBillCode()); - itemRecord.setPreBalance(preBalance); - itemRecord.setChangeMoney(emisWaybill.getFreight()); - itemRecord.setChangeType("2"); - itemRecord.setBackBalance(backBalance); - emisCreditSalesmenRecordMapper.insertEmisCreditSalesmenRecord(itemRecord); - // 更新余额 + BigDecimal changeMoney=emisWaybill.getFreight(); emisCreditSalesmenMapper.changeBalance(item0.getAccCode(),changeMoney); } } @@ -303,36 +273,101 @@ public class EmisBaseService { } /** - * 删除运单使用信用额度 - * @param emisWaybill + * 重新计算使用信用额度 + * @param oldBill + * @param newBill */ - public void deleteUseQuotaCredit(EmisWaybill emisWaybill) throws EmisBizError { - // 根据运单查询使用记录,删除以前的记录插入新的记录 - // 删除月结使用 - EmisCreditCustomerRecord queryCreditCustomerRecord=new EmisCreditCustomerRecord(); - queryCreditCustomerRecord.setBillCode(emisWaybill.getBillCode()); - queryCreditCustomerRecord.setChangeType("2"); - List listCreditCustomerRecord=emisCreditCustomerRecordMapper.selectEmisCreditCustomerRecordList(queryCreditCustomerRecord); - if(!CollectionUtils.isEmpty(listCreditCustomerRecord)){ - for (EmisCreditCustomerRecord item:listCreditCustomerRecord) { - // 恢复额度 - emisCreditCustomerMapper.changeBalance(item.getAccCode(),BigDecimal.ZERO.subtract(item.getChangeMoney())); - // 删除记录 - emisCreditCustomerRecordMapper.deleteEmisCreditCustomerRecordById(item.getId()); + public void adjustUseQuotaCredit(EmisWaybill oldBill,EmisWaybill newBill) throws EmisBizError { + + // 更新旧的统计 + if(oldBill!=null) { + String oldPaymentType = oldBill.getPaymentType(); + if ("2".equals(oldPaymentType) + || "4".equals(oldPaymentType) + || "5".equals(oldPaymentType) + ) { + EmisCreditCustomer queryCreditCustomer = new EmisCreditCustomer(); + queryCreditCustomer.setMonthlyPayCode(oldBill.getCustNo()); + queryCreditCustomer.getParams().put("sendDate", oldBill.getSendDate()); + queryCreditCustomer.setTransType(oldBill.getTransType()); + List listCreditCustomer = emisCreditCustomerMapper.selectEmisCreditCustomerList(queryCreditCustomer); + + if (!CollectionUtils.isEmpty(listCreditCustomer)) { + EmisCreditCustomer item0 = listCreditCustomer.get(0); + // 获取已使用金额 + BigDecimal useMoney = emisCreditCustomerMapper.getUseMoney(item0); + + EmisCreditCustomer upd = new EmisCreditCustomer(); + upd.setId(item0.getId()); + upd.setUseMoney(useMoney); + emisCreditCustomerMapper.updateEmisCreditCustomer(upd); + } + } else if ("1".equals(oldPaymentType) || "3".equals(oldPaymentType)) { + // 现金额度占用 + EmisCreditSalesmen queryCreditSalesmen = new EmisCreditSalesmen(); + queryCreditSalesmen.setSalesmen(oldBill.getSalesmen()); + queryCreditSalesmen.getParams().put("sendDate", oldBill.getSendDate()); + queryCreditSalesmen.setTransType(oldBill.getTransType()); + queryCreditSalesmen.setBlOpen("1"); + List listCreditSalesmen = emisCreditSalesmenMapper.selectEmisCreditSalesmenList(queryCreditSalesmen); + + if (!CollectionUtils.isEmpty(listCreditSalesmen)) { + EmisCreditSalesmen item0 = listCreditSalesmen.get(0); + // 获取已使用金额 + BigDecimal useMoney = emisCreditSalesmenMapper.getUseMoney(item0); + + EmisCreditSalesmen upd = new EmisCreditSalesmen(); + upd.setId(item0.getId()); + upd.setUseMoney(useMoney); + emisCreditSalesmenMapper.updateEmisCreditSalesmen(upd); + + } } } - // 删除现金使用 - EmisCreditSalesmenRecord queryCreditSalesmenRecord=new EmisCreditSalesmenRecord(); - queryCreditSalesmenRecord.setBillCode(emisWaybill.getBillCode()); - queryCreditSalesmenRecord.setChangeType("2"); - List listCreditSalesmenRecord=emisCreditSalesmenRecordMapper.selectEmisCreditSalesmenRecordList(queryCreditSalesmenRecord); - if(!CollectionUtils.isEmpty(listCreditSalesmenRecord)){ - for (EmisCreditSalesmenRecord item:listCreditSalesmenRecord) { - // 恢复额度 - emisCreditSalesmenMapper.changeBalance(item.getAccCode(),BigDecimal.ZERO.subtract(item.getChangeMoney())); - // 删除记录 - emisCreditSalesmenRecordMapper.deleteEmisCreditSalesmenRecordById(item.getId()); + // 更新新的统计 + if(newBill!=null) { + String newPaymentType = newBill.getPaymentType(); + if ("2".equals(newPaymentType) + || "4".equals(newPaymentType) + || "5".equals(newPaymentType) + ) { + EmisCreditCustomer queryCreditCustomer = new EmisCreditCustomer(); + queryCreditCustomer.setMonthlyPayCode(newBill.getCustNo()); + queryCreditCustomer.getParams().put("sendDate", newBill.getSendDate()); + queryCreditCustomer.setTransType(newBill.getTransType()); + List listCreditCustomer = emisCreditCustomerMapper.selectEmisCreditCustomerList(queryCreditCustomer); + + if (!CollectionUtils.isEmpty(listCreditCustomer)) { + EmisCreditCustomer item0 = listCreditCustomer.get(0); + // 获取已使用金额 + BigDecimal useMoney = emisCreditCustomerMapper.getUseMoney(item0); + + EmisCreditCustomer upd = new EmisCreditCustomer(); + upd.setId(item0.getId()); + upd.setUseMoney(useMoney); + emisCreditCustomerMapper.updateEmisCreditCustomer(upd); + } + } else if ("1".equals(newPaymentType) || "3".equals(newPaymentType)) { + // 现金额度占用 + EmisCreditSalesmen queryCreditSalesmen = new EmisCreditSalesmen(); + queryCreditSalesmen.setSalesmen(newBill.getSalesmen()); + queryCreditSalesmen.getParams().put("sendDate", newBill.getSendDate()); + queryCreditSalesmen.setTransType(newBill.getTransType()); + queryCreditSalesmen.setBlOpen("1"); + List listCreditSalesmen = emisCreditSalesmenMapper.selectEmisCreditSalesmenList(queryCreditSalesmen); + + if (!CollectionUtils.isEmpty(listCreditSalesmen)) { + EmisCreditSalesmen item0 = listCreditSalesmen.get(0); + // 获取已使用金额 + BigDecimal useMoney = emisCreditSalesmenMapper.getUseMoney(item0); + + EmisCreditSalesmen upd = new EmisCreditSalesmen(); + upd.setId(item0.getId()); + upd.setUseMoney(useMoney); + emisCreditSalesmenMapper.updateEmisCreditSalesmen(upd); + + } } } } diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java index 16bd5cd38..2f53ef14b 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisWaybillServiceImpl.java @@ -1408,11 +1408,9 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb confirmOrder(emisWaybillOld,emisWaybillSave); }else { - // if(OrderStatus.INIT.statusCode.equals(emisWaybillOld.getOrderStatus())){ // throw new EmisBizError(EmisBizErrorType.BILL_LOCK, "未接单,不允许修改"); // } - // 检查是否已锁单 checkDBBillIsLock(emisWaybillOld); @@ -1424,16 +1422,14 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb // 修改运单 reUpdateWayBill(emisWaybillOld, emisWaybillSave); + // 信用额度计算 + adjustUseQuotaCredit(emisWaybillOld,emisWaybillSave); } } return 1; } - - - - /** * 下单接口Oms * @param emisWaybillSave @@ -3150,6 +3146,16 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb e.printStackTrace(); } + // 运单立即重新出账 + try { + // 出账 + redoGenerateBill(emisWaybillSave.getBillCode()); + // 重新计算提成 + emisCommissionProfitService.reCalcProfitByBillCode(emisWaybillSave.getBillCode()); + + }catch (Exception ex){ + ex.printStackTrace(); + } }