feat(mat-purchase): 添加采购单分页查询功能并优化数据展示

- 新增 MatPurchaseVo 扩展字段包括配料名称、规格、型号、单位和当前库存
- 在 MatPurchaseMapper 中添加 selectVoPagePlus 方法支持分页查询
- 创建 MatPurchaseMapper.xml 中的 selectVoPagePlus 查询语句实现多表关联查询
- 修改 MatPurchaseServiceImpl 实现类中的 queryPageList 方法使用新的分页查询方法
- 添加 buildQueryWrapperPlus 私有方法构建查询条件并支持按截止时间倒序排列
- 更新查询逻辑从使用 LambdaQueryWrapper 到 QueryWrapper 并优化查询性能
This commit is contained in:
2026-01-30 14:50:22 +08:00
parent 7135782d34
commit 0d35c10079
4 changed files with 77 additions and 2 deletions

View File

@@ -99,5 +99,31 @@ public class MatPurchaseVo {
@ExcelProperty(value = "备注")
private String remark;
/**
* 配料名称
*/
private String materialName;
/**
* 配料规格
*/
private String spec;
/**
* 配料型号
*/
private String model;
/**
* 配料单位
*/
private String unit;
/**
* 当前库存
*/
private BigDecimal currentStock;
}

View File

@@ -1,8 +1,12 @@
package com.gear.mat.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gear.mat.domain.MatPurchase;
import com.gear.mat.domain.vo.MatPurchaseVo;
import com.gear.common.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Param;
/**
* 采购单主管理在途库存Mapper接口
@@ -12,4 +16,6 @@ import com.gear.common.core.mapper.BaseMapperPlus;
*/
public interface MatPurchaseMapper extends BaseMapperPlus<MatPurchaseMapper, MatPurchase, MatPurchaseVo> {
Page<MatPurchaseVo> selectVoPagePlus(@Param("page") Page<MatPurchaseVo> page, @Param(Constants.WRAPPER) Wrapper<MatPurchase> wrapper);
}

View File

@@ -1,6 +1,7 @@
package com.gear.mat.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.gear.common.utils.StringUtils;
import com.gear.common.core.page.TableDataInfo;
import com.gear.common.core.domain.PageQuery;
@@ -44,11 +45,30 @@ public class MatPurchaseServiceImpl implements IMatPurchaseService {
*/
@Override
public TableDataInfo<MatPurchaseVo> queryPageList(MatPurchaseBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<MatPurchase> lqw = buildQueryWrapper(bo);
Page<MatPurchaseVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
QueryWrapper<MatPurchase> qw = buildQueryWrapperPlus(bo);
Page<MatPurchaseVo> result = baseMapper.selectVoPagePlus(pageQuery.build(), qw);
return TableDataInfo.build(result);
}
private QueryWrapper<MatPurchase> buildQueryWrapperPlus(MatPurchaseBo bo) {
QueryWrapper<MatPurchase> qw = Wrappers.query();
qw.eq(StringUtils.isNotBlank(bo.getPurchaseNo()), "mp.purchase_no", bo.getPurchaseNo());
qw.eq(StringUtils.isNotBlank(bo.getFactory()), "mp.factory", bo.getFactory());
qw.eq(bo.getMaterialId() != null, "mp.material_id", bo.getMaterialId());
qw.eq(bo.getPlanNum() != null, "mp.plan_num", bo.getPlanNum());
qw.eq(bo.getPurchasePrice() != null, "mp.purchase_price", bo.getPurchasePrice());
qw.ge(bo.getBeginTime() != null, "mp.deadline", bo.getBeginTime());
qw.le(bo.getEndTime() != null, "mp.deadline", bo.getEndTime());
qw.eq(bo.getStatus() != null, "mp.status", bo.getStatus());
qw.eq(bo.getCancelTime() != null, "mp.cancel_time", bo.getCancelTime());
qw.eq(StringUtils.isNotBlank(bo.getOperator()), "mp.operator", bo.getOperator());
// 逻辑删除
qw.eq("mp.del_flag", 0);
// 排序
qw.orderByDesc("mp.deadline");
return qw;
}
/**
* 查询采购单主(管理在途库存)列表
*/

View File

@@ -23,5 +23,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="remark" column="remark"/>
</resultMap>
<select id="selectVoPagePlus" resultType="com.gear.mat.domain.vo.MatPurchaseVo">
SELECT
mp.purchase_id AS purchaseId,
mp.purchase_no AS purchaseNo,
mp.factory AS factory,
mp.material_id AS materialId,
mp.plan_num AS planNum,
mp.purchase_price AS purchasePrice,
mp.deadline AS deadline,
mp.status AS status,
mp.cancel_time AS cancelTime,
mp.operator AS operator,
mp.remark,
mm.material_name AS materialName,
mm.spec AS spec,
mm.model AS model,
mm.factory AS materialFactory,
mm.unit AS unit,
mm.current_stock AS currentStock
FROM mat_purchase mp
LEFT JOIN mat_material mm ON mp.material_id = mm.material_id AND mm.del_flag = 0
${ew.customSqlSegment}
</select>
</mapper>