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 + + + +