```
feat(invoice): 添加发票分页查询权限过滤功能 - 移除未使用的Supplier导入 - 新增selectInvoicePage方法支持用户角色权限过滤 - 非管理员用户只能查看自己创建的发票 - 优化发票新增逻辑,使用count查询替代list查询提升性能 - 添加事务注解确保数据一致性 - 异常处理改进,抛出ServiceException替代返回null ```
This commit is contained in:
@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.openhis.administration.domain.Invoice;
|
import com.openhis.administration.domain.Invoice;
|
||||||
import com.openhis.administration.domain.Supplier;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 发票管理Service接口
|
* 发票管理Service接口
|
||||||
@@ -29,4 +28,14 @@ public interface IInvoiceService extends IService<Invoice> {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
Invoice getByPaymentId(Long id);
|
Invoice getByPaymentId(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询发票列表(带用户角色权限过滤)
|
||||||
|
*
|
||||||
|
* @param page 分页参数
|
||||||
|
* @param isAdmin 是否为管理员
|
||||||
|
* @param userId 用户ID
|
||||||
|
* @return 分页结果
|
||||||
|
*/
|
||||||
|
IPage<Invoice> selectInvoicePage(Page<Invoice> page, boolean isAdmin, Long userId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,18 +1,17 @@
|
|||||||
package com.openhis.administration.service.impl;
|
package com.openhis.administration.service.impl;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.core.common.enums.DelFlag;
|
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.Invoice;
|
||||||
import com.openhis.administration.domain.Supplier;
|
|
||||||
import com.openhis.administration.mapper.InvoiceMapper;
|
import com.openhis.administration.mapper.InvoiceMapper;
|
||||||
import com.openhis.administration.service.IInvoiceService;
|
import com.openhis.administration.service.IInvoiceService;
|
||||||
import com.openhis.common.enums.SupplyStatus;
|
|
||||||
import com.openhis.workflow.domain.SupplyRequest;
|
|
||||||
import org.springframework.stereotype.Service;
|
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.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -29,20 +28,22 @@ public class InvoiceServiceImpl extends ServiceImpl<InvoiceMapper, Invoice> impl
|
|||||||
* 新增发票
|
* 新增发票
|
||||||
*
|
*
|
||||||
* @param invoice 发票实体
|
* @param invoice 发票实体
|
||||||
* @return
|
* @return 发票ID
|
||||||
|
* @throws ServiceException 当发票已存在或插入失败时抛出异常
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Long addInvoice(Invoice invoice) {
|
public Long addInvoice(Invoice invoice) {
|
||||||
// 根据编码判断发票是否存在
|
// 根据编码判断发票是否存在 - 使用count查询优化性能
|
||||||
List<Invoice> invoices
|
long count = baseMapper.selectCount(new LambdaQueryWrapper<Invoice>().eq(Invoice::getBusNo, invoice.getBusNo()));
|
||||||
= baseMapper.selectList(new LambdaQueryWrapper<Invoice>().eq(Invoice::getBusNo, invoice.getBusNo()));
|
if (count > 0) {
|
||||||
if (invoices.size() > 0) {
|
throw new ServiceException("发票编码已存在: " + invoice.getBusNo());
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 新增发票
|
// 新增发票
|
||||||
int insert = baseMapper.insert(invoice);
|
int insert = baseMapper.insert(invoice);
|
||||||
if (insert != 1) {
|
if (insert != 1) {
|
||||||
return null;
|
throw new ServiceException("发票新增失败,请检查输入数据");
|
||||||
}
|
}
|
||||||
|
|
||||||
return invoice.getId();
|
return invoice.getId();
|
||||||
@@ -54,14 +55,16 @@ public class InvoiceServiceImpl extends ServiceImpl<InvoiceMapper, Invoice> impl
|
|||||||
.eq(Invoice::getDeleteFlag, DelFlag.NO.getCode()));
|
.eq(Invoice::getDeleteFlag, DelFlag.NO.getCode()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 分页查询发票列表
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
public Page<Invoice> selectInvoicePage(Page<Invoice> page, boolean isAdmin, Long userId) {
|
public IPage<Invoice> selectInvoicePage(Page<Invoice> page, boolean isAdmin, Long userId) {
|
||||||
LambdaQueryWrapper<Invoice> queryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<Invoice> queryWrapper = new LambdaQueryWrapper<Invoice>()
|
||||||
// 可以根据需要添加查询条件,目前按创建时间倒序排列
|
.eq(Invoice::getDeleteFlag, DelFlag.NO.getCode());
|
||||||
queryWrapper.orderByDesc(Invoice::getCreateDate);
|
|
||||||
|
// 非管理员用户只能查看自己创建的发票
|
||||||
|
if (!isAdmin) {
|
||||||
|
queryWrapper.eq(Invoice::getInvoicingStaffId, userId);
|
||||||
|
}
|
||||||
|
|
||||||
return baseMapper.selectPage(page, queryWrapper);
|
return baseMapper.selectPage(page, queryWrapper);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user