From 10db60689ee98ddc53c905099ac4c66bb3eef9e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B8=B8=E7=86=9F=E5=90=B4=E5=BD=A6=E7=A5=96?= Date: Thu, 15 Jan 2026 13:53:03 +0800 Subject: [PATCH] =?UTF-8?q?feat(automatedWarehouse):=20=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E6=89=98=E7=9B=98=E5=90=88=E5=B9=B6=E6=9F=A5=E8=AF=A2=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=88=86=E9=A1=B5=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在PalletMergeQueryData实体类中新增maxPositionCount字段,支持前端传入最大已用数量筛选条件 - 更新controller层searchPalletMergeList方法,返回分页数据格式,接收page和limit参数 - 新增mapper接口searchPalletMergeListPage方法,使用MyBatis-Plus分页插件实现数据库分页查询 - 完善service层实现,支持前端传入maxPositionCount或后端自动计算最大已用位置数 - 添加分页参数校验,默认页码为1,每页限制20条记录 - 更新XML映射文件,实现分页查询SQL逻辑,支持maxPositionCount条件筛选 --- .../PalletMergeQueryController.java | 11 ++-- .../entity/PalletMergeQueryData.java | 10 ++++ .../mapper/PalletMergeQueryMapper.java | 14 +++++ .../service/PalletMergeQueryService.java | 11 ++-- .../impl/PalletMergeQueryServiceImpl.java | 57 +++++++++++++------ .../PalletMergeQueryMapper.xml | 34 +++++++++++ 6 files changed, 109 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/gaotao/modules/automatedWarehouse/controller/PalletMergeQueryController.java b/src/main/java/com/gaotao/modules/automatedWarehouse/controller/PalletMergeQueryController.java index 12dbe0b1..9dfe12de 100644 --- a/src/main/java/com/gaotao/modules/automatedWarehouse/controller/PalletMergeQueryController.java +++ b/src/main/java/com/gaotao/modules/automatedWarehouse/controller/PalletMergeQueryController.java @@ -1,5 +1,6 @@ package com.gaotao.modules.automatedWarehouse.controller; +import com.gaotao.common.utils.PageUtils; import com.gaotao.common.utils.R; import com.gaotao.modules.automatedWarehouse.entity.PalletMergeQueryData; import com.gaotao.modules.automatedWarehouse.entity.PalletTypeOption; @@ -39,17 +40,17 @@ public class PalletMergeQueryController { } /** - * @Description 查询需要合托的托盘列表 - rqrq + * @Description 查询需要合托的托盘列表(分页)- rqrq * @Title searchPalletMergeList - * @param data 查询条件(包含site和palletType) + * @param data 查询条件(包含site、palletType、maxPositionCount可选、page、limit) * @return R * @author rqrq - * @date 2026/01/06 + * @date 2026/01/15 */ @PostMapping(value = "/searchPalletMergeList") public R searchPalletMergeList(@RequestBody PalletMergeQueryData data) throws Exception { - List rows = palletMergeQueryService.searchPalletMergeList(data); - return R.ok().put("rows", rows); + PageUtils page = palletMergeQueryService.searchPalletMergeList(data); + return R.ok().put("page", page); } /** diff --git a/src/main/java/com/gaotao/modules/automatedWarehouse/entity/PalletMergeQueryData.java b/src/main/java/com/gaotao/modules/automatedWarehouse/entity/PalletMergeQueryData.java index 5a558a18..eb5bb983 100644 --- a/src/main/java/com/gaotao/modules/automatedWarehouse/entity/PalletMergeQueryData.java +++ b/src/main/java/com/gaotao/modules/automatedWarehouse/entity/PalletMergeQueryData.java @@ -68,6 +68,16 @@ public class PalletMergeQueryData { */ private String typeDesc; + // ==================== 查询参数(可选)==================== + + /** + * 最大已用数量(可选查询条件)- rqrq + *

如果前端传入此值,则使用前端传入的值作为筛选上限

+ *

如果前端未传入,则由后端自动计算该类型的最大已用位置数

+ *

SQL示例:HAVING usedPositionCount < #{maxPositionCount}

+ */ + private Integer maxPositionCount; + // ==================== 分页参数 ==================== /** diff --git a/src/main/java/com/gaotao/modules/automatedWarehouse/mapper/PalletMergeQueryMapper.java b/src/main/java/com/gaotao/modules/automatedWarehouse/mapper/PalletMergeQueryMapper.java index 9f2f68f6..5b7d104c 100644 --- a/src/main/java/com/gaotao/modules/automatedWarehouse/mapper/PalletMergeQueryMapper.java +++ b/src/main/java/com/gaotao/modules/automatedWarehouse/mapper/PalletMergeQueryMapper.java @@ -1,5 +1,7 @@ package com.gaotao.modules.automatedWarehouse.mapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.gaotao.modules.automatedWarehouse.entity.PalletDetail; import com.gaotao.modules.automatedWarehouse.entity.PalletMergeQueryData; import com.gaotao.modules.automatedWarehouse.entity.PalletTypeOption; @@ -49,6 +51,18 @@ public interface PalletMergeQueryMapper { @Param("palletType") String palletType, @Param("maxPositionCount") Integer maxPositionCount); + /** + * @Description 查询需要合托的托盘列表(分页版本)- rqrq + * @param page 分页对象 + * @param data 查询条件(包含site、palletType、maxPositionCount) + * @return IPage + * @author rqrq + * @date 2026/01/15 + */ + IPage searchPalletMergeListPage( + Page page, + @Param("query") PalletMergeQueryData data); + /** * @Description 查询栈板上的所有物料明细(用于合托推送WCS)- rqrq * @param site 工厂编码 diff --git a/src/main/java/com/gaotao/modules/automatedWarehouse/service/PalletMergeQueryService.java b/src/main/java/com/gaotao/modules/automatedWarehouse/service/PalletMergeQueryService.java index 7408c09f..1be9d779 100644 --- a/src/main/java/com/gaotao/modules/automatedWarehouse/service/PalletMergeQueryService.java +++ b/src/main/java/com/gaotao/modules/automatedWarehouse/service/PalletMergeQueryService.java @@ -1,5 +1,6 @@ package com.gaotao.modules.automatedWarehouse.service; +import com.gaotao.common.utils.PageUtils; import com.gaotao.modules.automatedWarehouse.entity.PalletMergeQueryData; import com.gaotao.modules.automatedWarehouse.entity.PalletTypeOption; @@ -23,14 +24,14 @@ public interface PalletMergeQueryService { List getPalletTypeOptions(String site); /** - * @Description 查询需要合托的托盘列表 - rqrq + * @Description 查询需要合托的托盘列表(分页)- rqrq * @Title searchPalletMergeList - * @param data 查询条件(包含site和palletType) - * @return List + * @param data 查询条件(包含site、palletType、maxPositionCount可选、page、limit) + * @return PageUtils 分页结果 * @author rqrq - * @date 2026/01/06 + * @date 2026/01/15 */ - List searchPalletMergeList(PalletMergeQueryData data); + PageUtils searchPalletMergeList(PalletMergeQueryData data); /** * @Description 提交合托请求 - 校验栈板状态并推送WCS合托任务 - rqrq diff --git a/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/PalletMergeQueryServiceImpl.java b/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/PalletMergeQueryServiceImpl.java index 30e8f963..06506a0b 100644 --- a/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/PalletMergeQueryServiceImpl.java +++ b/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/PalletMergeQueryServiceImpl.java @@ -1,5 +1,8 @@ package com.gaotao.modules.automatedWarehouse.service.impl; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gaotao.common.utils.PageUtils; import com.gaotao.modules.api.entity.NotifyDataToWcs; import com.gaotao.modules.api.entity.NotifyDataToWcsPalletList; import com.gaotao.modules.api.entity.NotifyDataToWcsPalletSubDetail; @@ -73,25 +76,26 @@ public class PalletMergeQueryServiceImpl implements PalletMergeQueryService { } /** - * @Description 查询需要合托的托盘列表 - rqrq + * @Description 查询需要合托的托盘列表(分页)- rqrq * *

查询逻辑:

*
    - *
  1. 先计算该pallet_type在立库中装得最多的栈板的position+layer count
  2. + *
  3. 如果前端传入maxPositionCount则使用,否则计算该类型最大已用位置数
  4. *
  5. 查询立库中该类型的栈板,count>0 且 count<最大count
  6. *
  7. 只查询calling_flag='N'的栈板
  8. *
  9. 按count从小到大排序
  10. + *
  11. 返回分页结果
  12. *
* * @Title searchPalletMergeList - * @param data 查询条件(包含site和palletType) - * @return List + * @param data 查询条件(包含site、palletType、maxPositionCount可选、page、limit) + * @return PageUtils 分页结果 * @author rqrq - * @date 2026/01/06 + * @date 2026/01/15 */ @Override - public List searchPalletMergeList(PalletMergeQueryData data) { - System.out.println("开始查询需要合托的托盘列表 - rqrq,site=" + data.getSite() + ", palletType=" + data.getPalletType()); + public PageUtils searchPalletMergeList(PalletMergeQueryData data) { + System.out.println("开始查询需要合托的托盘列表(分页)- rqrq,site=" + data.getSite() + ", palletType=" + data.getPalletType() + ", 前端传入maxPositionCount=" + data.getMaxPositionCount()); // 参数校验 - rqrq if (!StringUtils.hasText(data.getSite())) { @@ -101,22 +105,39 @@ public class PalletMergeQueryServiceImpl implements PalletMergeQueryService { throw new RuntimeException("托盘类型不能为空"); } - // Step 1: 计算该类型在立库中装得最多的栈板的position+layer count - rqrq - Integer maxPositionCount = palletMergeQueryMapper.getMaxPositionCount(data.getSite(), data.getPalletType()); - System.out.println("该类型最大已用位置数: " + maxPositionCount + " - rqrq"); + // 设置默认分页参数 - rqrq + if (data.getPage() == null || data.getPage() <= 0) { + data.setPage(1); + } + if (data.getLimit() == null || data.getLimit() <= 0) { + data.setLimit(20); + } + + // 如果前端传入maxPositionCount则使用,否则计算该类型最大已用位置数 - rqrq + Integer maxPositionCount = data.getMaxPositionCount(); + if (maxPositionCount == null || maxPositionCount <= 0) { + maxPositionCount = palletMergeQueryMapper.getMaxPositionCount(data.getSite(), data.getPalletType())-1; + System.out.println("后端计算最大已用位置数: " + maxPositionCount + " - rqrq"); + } else { + System.out.println("使用前端传入的最大已用位置数: " + maxPositionCount + " - rqrq"); + } - // 如果没有任何栈板或最大count为0,返回空列表 - rqrq + // 如果没有任何栈板或最大count为0,返回空分页结果 - rqrq if (maxPositionCount == null || maxPositionCount <= 0) { - System.out.println("没有找到该类型的栈板,返回空列表 - rqrq"); - return new ArrayList<>(); + System.out.println("没有找到该类型的栈板,返回空分页结果 - rqrq"); + return new PageUtils(new ArrayList<>(), 0, data.getLimit(), data.getPage()); } - // Step 2: 查询count>0 且 count<最大count的栈板,按count从小到大排序 - rqrq - List list = palletMergeQueryMapper.searchPalletMergeList( - data.getSite(), data.getPalletType(), maxPositionCount); + // 设置maxPositionCount到data用于查询 - rqrq + data.setMaxPositionCount(maxPositionCount); - System.out.println("查询需要合托的托盘列表完成,共" + list.size() + "条记录 - rqrq"); - return list; + // 使用MyBatis-Plus分页方式查询 - rqrq + IPage resultList = palletMergeQueryMapper.searchPalletMergeListPage( + new Page<>(data.getPage(), data.getLimit()), data); + PageUtils pageResult = new PageUtils(resultList); + + System.out.println("查询需要合托的托盘列表完成,共" + resultList.getTotal() + "条记录 - rqrq"); + return pageResult; } /** diff --git a/src/main/resources/mapper/automatedWarehouse/PalletMergeQueryMapper.xml b/src/main/resources/mapper/automatedWarehouse/PalletMergeQueryMapper.xml index 59d93a7c..299da00e 100644 --- a/src/main/resources/mapper/automatedWarehouse/PalletMergeQueryMapper.xml +++ b/src/main/resources/mapper/automatedWarehouse/PalletMergeQueryMapper.xml @@ -70,6 +70,40 @@ ORDER BY t.usedPositionCount ASC + + + +