From a080b4294c80012a7bb0a6f7eb533c0ec6ff559a Mon Sep 17 00:00:00 2001 From: chenqi Date: Sat, 27 Dec 2025 22:53:39 +0800 Subject: [PATCH] =?UTF-8?q?```=20feat(invoice):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=8F=91=E7=A5=A8=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2=E6=9D=83?= =?UTF-8?q?=E9=99=90=E8=BF=87=E6=BB=A4=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除未使用的Supplier导入 - 新增selectInvoicePage方法支持用户角色权限过滤 - 非管理员用户只能查看自己创建的发票 - 优化发票新增逻辑,使用count查询替代list查询提升性能 - 添加事务注解确保数据一致性 - 异常处理改进,抛出ServiceException替代返回null ``` --- .../service/IInvoiceService.java | 11 ++++- .../service/impl/InvoiceServiceImpl.java | 43 ++++++++++--------- 2 files changed, 33 insertions(+), 21 deletions(-) diff --git a/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/service/IInvoiceService.java b/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/service/IInvoiceService.java index b0b7d941..dd01237a 100644 --- a/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/service/IInvoiceService.java +++ b/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/service/IInvoiceService.java @@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.openhis.administration.domain.Invoice; -import com.openhis.administration.domain.Supplier; /** * 发票管理Service接口 @@ -29,4 +28,14 @@ public interface IInvoiceService extends IService { * @return */ Invoice getByPaymentId(Long id); + + /** + * 分页查询发票列表(带用户角色权限过滤) + * + * @param page 分页参数 + * @param isAdmin 是否为管理员 + * @param userId 用户ID + * @return 分页结果 + */ + IPage selectInvoicePage(Page page, boolean isAdmin, Long userId); } diff --git a/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/service/impl/InvoiceServiceImpl.java b/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/service/impl/InvoiceServiceImpl.java index ce8463e1..3e1f1735 100644 --- a/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/service/impl/InvoiceServiceImpl.java +++ b/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/service/impl/InvoiceServiceImpl.java @@ -1,18 +1,17 @@ package com.openhis.administration.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.core.common.enums.DelFlag; -import com.core.common.utils.SecurityUtils; +import com.core.common.exception.ServiceException; import com.openhis.administration.domain.Invoice; -import com.openhis.administration.domain.Supplier; import com.openhis.administration.mapper.InvoiceMapper; import com.openhis.administration.service.IInvoiceService; -import com.openhis.common.enums.SupplyStatus; -import com.openhis.workflow.domain.SupplyRequest; import org.springframework.stereotype.Service; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.springframework.transaction.annotation.Transactional; + import java.util.Date; import java.util.List; @@ -29,20 +28,22 @@ public class InvoiceServiceImpl extends ServiceImpl impl * 新增发票 * * @param invoice 发票实体 - * @return + * @return 发票ID + * @throws ServiceException 当发票已存在或插入失败时抛出异常 */ @Override + @Transactional(rollbackFor = Exception.class) public Long addInvoice(Invoice invoice) { - // 根据编码判断发票是否存在 - List invoices - = baseMapper.selectList(new LambdaQueryWrapper().eq(Invoice::getBusNo, invoice.getBusNo())); - if (invoices.size() > 0) { - return null; + // 根据编码判断发票是否存在 - 使用count查询优化性能 + long count = baseMapper.selectCount(new LambdaQueryWrapper().eq(Invoice::getBusNo, invoice.getBusNo())); + if (count > 0) { + throw new ServiceException("发票编码已存在: " + invoice.getBusNo()); } + // 新增发票 int insert = baseMapper.insert(invoice); if (insert != 1) { - return null; + throw new ServiceException("发票新增失败,请检查输入数据"); } return invoice.getId(); @@ -54,14 +55,16 @@ public class InvoiceServiceImpl extends ServiceImpl impl .eq(Invoice::getDeleteFlag, DelFlag.NO.getCode())); } - /** - * 分页查询发票列表 - */ @Override - public Page selectInvoicePage(Page page, boolean isAdmin, Long userId) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - // 可以根据需要添加查询条件,目前按创建时间倒序排列 - queryWrapper.orderByDesc(Invoice::getCreateDate); + public IPage selectInvoicePage(Page page, boolean isAdmin, Long userId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .eq(Invoice::getDeleteFlag, DelFlag.NO.getCode()); + + // 非管理员用户只能查看自己创建的发票 + if (!isAdmin) { + queryWrapper.eq(Invoice::getInvoicingStaffId, userId); + } + return baseMapper.selectPage(page, queryWrapper); } }