From 0ab9dfd8f122195e4e9f09bd50c59e0a47450bec Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期三, 19 三月 2025 15:50:03 +0800 Subject: [PATCH] fix: resolve merge conflicts in .gitignore --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBillServiceImpl.java | 116 ++++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 84 insertions(+), 32 deletions(-) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBillServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBillServiceImpl.java index 92617fc..0376220 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBillServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBillServiceImpl.java @@ -1,15 +1,14 @@ package com.ruoyi.system.service.impl; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.basic.PageInfo; +import com.ruoyi.common.config.SmsProperties; import com.ruoyi.common.constant.AmountConstant; import com.ruoyi.common.constant.CacheConstants; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.exception.ServiceException; -import com.ruoyi.common.utils.DateUtils; -import com.ruoyi.common.utils.SmsUtil; -import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.common.utils.TencentMailUtil; +import com.ruoyi.common.utils.*; import com.ruoyi.common.utils.uuid.UUID; import com.ruoyi.system.dto.*; import com.ruoyi.system.mapper.TBillMapper; @@ -242,41 +241,72 @@ @Override @Transactional(rollbackFor = Exception.class) public boolean checkOfflinePay(OfflinePayCheckDto dto) { - TBankFlow bankflow = tBankFlowService.getById(dto.getFlowId()); TBillDto bill = getDetailByBillId(dto.getBillId()); - if (bankflow.getRemainingMoney().compareTo(BigDecimal.ZERO)<=0){ - throw new ServiceException("该流水已无可抵扣剩余金额"); - } - if (bankflow.getRemainingMoney().compareTo(dto.getAmount())<0){ - throw new ServiceException("实付金额不能高于于流水可抵扣剩余金额"); - } - //如果实付金额大于欠费金额 - if (dto.getAmount().compareTo(bill.getOutstandingMoney())>=0){ - throw new ServiceException("实付金额不能高于该账单欠费金额"); - } + if (dto.getPayType()==1){ //银行 + if (StringUtils.isEmpty(dto.getFlowId())){ + throw new ServiceException("银行流水ID不能为空"); + } + TBankFlow bankflow = tBankFlowService.getById(dto.getFlowId()); + if (bankflow.getRemainingMoney().compareTo(BigDecimal.ZERO)<=0){ + throw new ServiceException("该流水已无可抵扣剩余金额"); + } + if (bankflow.getRemainingMoney().compareTo(dto.getAmount())<0){ + throw new ServiceException("实付金额不能高于于流水可抵扣剩余金额"); + } + //如果实付金额大于欠费金额 + if (dto.getAmount().compareTo(bill.getOutstandingMoney())>0){ + throw new ServiceException("实付金额不能高于该账单欠费金额"); + } + TBill billSave = new TBill(); + billSave.setId(bill.getId()); + billSave.setPayFeesMoney(dto.getAmount()); + billSave.setBankSerialNumber(bankflow.getBankSerialNumber()); + billSave.setPayFeesTime(bankflow.getPayTime()); + billSave.setVoucher(dto.getVoucher()); + billSave.setPayFeesType(2); + TBill back = lockAndUpdateInfo(billSave, 2); + TBankFlow saveBankFlow = new TBankFlow(); + saveBankFlow.setId(bankflow.getId()); + saveBankFlow.setDeductionMoney(bankflow.getDeductionMoney().add(dto.getAmount())); + BigDecimal subtract = bankflow.getRemainingMoney().subtract(dto.getAmount()); + saveBankFlow.setRemainingMoney(subtract); + if (BigDecimal.ZERO.compareTo(subtract) == 0){ + saveBankFlow.setFlowStatus(1); + } + tBankFlowService.updateById(saveBankFlow); + //更新银行流水的已抵扣金额和剩余可抵扣金额 + //存流水 + TFlowManagement save = new TFlowManagement(); + save.setPayType(3); + save.setPayer(dto.getPayer()); + save.setPayTime(bankflow.getPayTime()); + save.setSysSerialNumber(OrderNos.getDid(30)); + save.setBankSerialNumber(bankflow.getBankSerialNumber()); + save.setFlowType(2); + save.setPaymentBillId(back.getId()); + save.setDeductionMoney(back.getDeductionMoney()); + save.setFlowMoney(dto.getAmount()); + save.setRemainingMoney(back.getOutstandingMoney()); + save.setPreOutstand(back.getPreOutstand()); + tFlowManagementService.save(save); + return true; + } + //现金支付 TBill billSave = new TBill(); billSave.setId(bill.getId()); billSave.setPayFeesMoney(dto.getAmount()); - billSave.setBankSerialNumber(bankflow.getBankSerialNumber()); - billSave.setPayFeesTime(bankflow.getPayTime()); + billSave.setPayFeesTime(dto.getPayTime()!=null?dto.getPayTime():DateUtils.dateToLocalDateTime(new Date())); billSave.setVoucher(dto.getVoucher()); billSave.setPayFeesType(2); TBill back = lockAndUpdateInfo(billSave, 2); - //更新银行流水的已抵扣金额和剩余可抵扣金额 - TBankFlow saveBankFlow = new TBankFlow(); - saveBankFlow.setId(bankflow.getId()); - saveBankFlow.setDeductionMoney(bankflow.getDeductionMoney().add(dto.getAmount())); - saveBankFlow.setRemainingMoney(bankflow.getRemainingMoney().subtract(dto.getAmount())); - tBankFlowService.updateById(saveBankFlow); - //存流水 TFlowManagement save = new TFlowManagement(); save.setPayType(3); save.setPayer(dto.getPayer()); - save.setPayTime(bankflow.getPayTime()); - save.setBankSerialNumber(bankflow.getBankSerialNumber()); - save.setFlowType(2); + save.setPayTime(billSave.getPayFeesTime()); + save.setSysSerialNumber(OrderNos.getDid(30)); + save.setFlowType(1); save.setPaymentBillId(back.getId()); save.setDeductionMoney(back.getDeductionMoney()); save.setFlowMoney(dto.getAmount()); @@ -331,6 +361,7 @@ saveFlow.setPayType(1); saveFlow.setPayer(order.getUserId()); saveFlow.setPayTime(DateUtils.dateToLocalDateTime(save.getPayTime())); + saveFlow.setSysSerialNumber(OrderNos.getDid(30)); saveFlow.setBankSerialNumber(save.getPayNo()); saveFlow.setFlowType(2); saveFlow.setPaymentBillId(bill.getId()); @@ -383,7 +414,7 @@ int failNum = 0; for (String billId : dto.getBillIds()) { TBillDto bill = getDetailByBillId(billId); - if (bill.getSmsLastTime()!=null + if (bill.getSmsLastTime()!=null && bill.getSmsStatus()==1 && (System.currentTimeMillis()-bill.getSmsLastTime().getTime()<smsUtil.getPro().getBillSmsDelayPeriod()*60*1000L)){ throw new ServiceException("有账单最近一次发送的时间是:"+DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,bill.getSmsLastTime())); } @@ -394,7 +425,8 @@ TBill save = new TBill(); save.setId(bill.getId()); try { - smsUtil.sendSms(bill.getPhone(), "2365726", new String[]{bill.getPartyTwoName()}); + String name = bill.getPartyTwoName().length()>5?bill.getPartyTwoName().substring(0,5):bill.getPartyTwoName(); + smsUtil.sendSms(bill.getPhone(), "2365726", new String[]{name}); save.setSmsStatus(1); }catch (ServiceException e){ failNum++; @@ -412,7 +444,7 @@ int failNum = 0; for (String billId : dto.getBillIds()) { TBillDto bill = getDetailByBillId(billId); - if (bill.getMailLastTime()!=null + if (bill.getMailLastTime()!=null && bill.getMailStatus()==1 && (System.currentTimeMillis()-bill.getMailLastTime().getTime()<mailUtil.getPro().getBillMailDelayPeriod()*60*1000L)){ throw new ServiceException("有账单最近一次发送的时间是:"+DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,bill.getMailLastTime())); } @@ -463,7 +495,7 @@ throw new ServiceException("实付金额不能高于于流水可抵扣剩余金额"); } //如果实付金额大于欠费金额 - if (dto.getAmount().compareTo(bill.getOutstandingMoney())>=0){ + if (dto.getAmount().compareTo(bill.getOutstandingMoney())>0){ throw new ServiceException("实付金额不能高于该账单欠费金额"); } } @@ -481,7 +513,11 @@ TBankFlow saveBankFlow = new TBankFlow(); saveBankFlow.setId(bankflow.getId()); saveBankFlow.setDeductionMoney(bankflow.getDeductionMoney().add(dto.getAmount())); - saveBankFlow.setRemainingMoney(bankflow.getRemainingMoney().subtract(dto.getAmount())); + BigDecimal subtract = bankflow.getRemainingMoney().subtract(dto.getAmount()); + saveBankFlow.setRemainingMoney(subtract); + if (BigDecimal.ZERO.compareTo(subtract) == 0){ + saveBankFlow.setFlowStatus(1); + } tBankFlowService.updateById(saveBankFlow); } //存流水 @@ -489,6 +525,7 @@ save.setPayType(3); save.setPayer(dto.getPayer()); save.setPayTime(bankflow!=null?bankflow.getPayTime():DateUtils.dateToLocalDateTime(new Date())); + save.setSysSerialNumber(OrderNos.getDid()); save.setBankSerialNumber(bankflow!=null?bankflow.getBankSerialNumber():null); save.setFlowType(dto.getPayType()==1?2:1); save.setPaymentBillId(back.getId()); @@ -500,5 +537,20 @@ return true; } + @Override + public BillStatisticsDto statistics() { + BillStatisticsDto dto = new BillStatisticsDto(); + dto.setRent(getBaseMapper().statisticsAllRent()); + dto.setNopay(getBaseMapper().statisticsNoPay()); + dto.setPayed(getBaseMapper().statisticsPayed()); + dto.setOverdue(getBaseMapper().statisticsOverdue()); + return dto; + } + + @Override + public Integer batchBillCount(String userId, List<String> billIds) { + return this.baseMapper.batchBillCount(userId,billIds); + } + } -- Gitblit v1.7.1