diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpFinInvoiceInfoController.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpFinInvoiceInfoController.java index f07a43db..8777d8d0 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpFinInvoiceInfoController.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/controller/ErpFinInvoiceInfoController.java @@ -142,6 +142,17 @@ public class ErpFinInvoiceInfoController extends BaseController { return R.ok(list); } + /** + * 按合同查询累计回款比例最大的开票单累计回款金额 + */ + @SaCheckPermission("oa/erp:finInvoiceInfo:query") + @GetMapping("/getMaxReturnedMoneyByContractId/{contractId}") + public R getMaxReturnedMoneyByContractId(@NotNull(message = "contractId不能为空") + @PathVariable("contractId") Long contractId, + @RequestParam(required = false) Long excludeInvoiceId) { + return R.ok(erpFinInvoiceInfoService.getMaxReturnedMoneyByContractId(contractId, excludeInvoiceId)); + } + /** * 修改开票发票附件信息 diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpFinInvoiceInfoService.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpFinInvoiceInfoService.java index d7c31465..b4b0387e 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpFinInvoiceInfoService.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/IErpFinInvoiceInfoService.java @@ -8,6 +8,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; import java.util.Collection; import java.util.List; @@ -83,4 +84,13 @@ public interface IErpFinInvoiceInfoService { * @return 是否修改成功 */ public Boolean updateInvoiceAttachByBo(ErpFinInvoiceInfoBo bo); + + /** + * 按合同查询累计回款比例最大的开票单累计回款金额 + * + * @param contractId 合同ID + * @param excludeInvoiceId 排除的开票ID(编辑当前单时使用) + * @return 累计回款金额,无记录时返回0 + */ + BigDecimal getMaxReturnedMoneyByContractId(Long contractId, Long excludeInvoiceId); } diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpFinInvoiceInfoServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpFinInvoiceInfoServiceImpl.java index 0f94b8fc..30a0bf3c 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpFinInvoiceInfoServiceImpl.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/erp/service/impl/ErpFinInvoiceInfoServiceImpl.java @@ -378,6 +378,32 @@ public class ErpFinInvoiceInfoServiceImpl extends AbstractWorkflowService qw = Wrappers.lambdaQuery(ErpFinInvoiceInfo.class) + .eq(ErpFinInvoiceInfo::getContractId, contractId) + .eq(ErpFinInvoiceInfo::getDelFlag, DataConstants.DEL_FLAG_NORMAL) + .ne(ErpFinInvoiceInfo::getInvoiceStatus, OAStatusEnum.INVALID.getStatus()) + .isNotNull(ErpFinInvoiceInfo::getReturnedRate) + .orderByDesc(ErpFinInvoiceInfo::getReturnedRate) + .orderByDesc(ErpFinInvoiceInfo::getInvoiceId) + .last("LIMIT 1"); + if (excludeInvoiceId != null) { + qw.ne(ErpFinInvoiceInfo::getInvoiceId, excludeInvoiceId); + } + ErpFinInvoiceInfo invoiceInfo = baseMapper.selectOne(qw); + if (invoiceInfo == null || invoiceInfo.getReturnedMoney() == null) { + return ZERO; + } + return invoiceInfo.getReturnedMoney(); + } + /** * 修改发票附件信息