From 28537b4834443e9a78f2eabc37250db3f6b7c69f 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: Tue, 6 Jan 2026 15:25:49 +0800 Subject: [PATCH] =?UTF-8?q?feat(automatedWarehouse):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=90=88=E6=89=98=E6=9F=A5=E8=AF=A2=E5=8A=9F=E8=83=BD=E6=A8=A1?= =?UTF-8?q?=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 PalletMergeQueryController 提供合托查询相关接口 - 新增 PalletMergeQueryData 实体类定义合托查询业务数据结构 - 新增 PalletTypeOption 实体类用于托盘类型下拉选项 - 实现 PalletMergeQueryService 服务接口及具体业务逻辑 - 集成 MyBatis Mapper 和 XML 配置完成数据库查询操作 - 实现托盘类型筛选和合托托盘列表查询功能 - 添加参数校验和查询逻辑处理机制 --- .../PalletMergeQueryController.java | 69 +++++++++++++ .../entity/PalletMergeQueryData.java | 83 ++++++++++++++++ .../entity/PalletTypeOption.java | 32 +++++++ .../mapper/PalletMergeQueryMapper.java | 51 ++++++++++ .../service/PalletMergeQueryService.java | 35 +++++++ .../impl/PalletMergeQueryServiceImpl.java | 96 +++++++++++++++++++ .../PalletMergeQueryMapper.xml | 74 ++++++++++++++ 7 files changed, 440 insertions(+) create mode 100644 src/main/java/com/gaotao/modules/automatedWarehouse/controller/PalletMergeQueryController.java create mode 100644 src/main/java/com/gaotao/modules/automatedWarehouse/entity/PalletMergeQueryData.java create mode 100644 src/main/java/com/gaotao/modules/automatedWarehouse/entity/PalletTypeOption.java create mode 100644 src/main/java/com/gaotao/modules/automatedWarehouse/mapper/PalletMergeQueryMapper.java create mode 100644 src/main/java/com/gaotao/modules/automatedWarehouse/service/PalletMergeQueryService.java create mode 100644 src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/PalletMergeQueryServiceImpl.java create mode 100644 src/main/resources/mapper/automatedWarehouse/PalletMergeQueryMapper.xml diff --git a/src/main/java/com/gaotao/modules/automatedWarehouse/controller/PalletMergeQueryController.java b/src/main/java/com/gaotao/modules/automatedWarehouse/controller/PalletMergeQueryController.java new file mode 100644 index 0000000..463e88b --- /dev/null +++ b/src/main/java/com/gaotao/modules/automatedWarehouse/controller/PalletMergeQueryController.java @@ -0,0 +1,69 @@ +package com.gaotao.modules.automatedWarehouse.controller; + +import com.gaotao.common.utils.R; +import com.gaotao.modules.automatedWarehouse.entity.PalletMergeQueryData; +import com.gaotao.modules.automatedWarehouse.entity.PalletTypeOption; +import com.gaotao.modules.automatedWarehouse.service.PalletMergeQueryService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * @Description 合托查询Controller - rqrq + * @Author rqrq + * @Date 2026/01/06 + */ +@RestController +@RequestMapping("automatedWarehouse/palletMergeQuery") +public class PalletMergeQueryController { + + @Autowired + private PalletMergeQueryService palletMergeQueryService; + + /** + * @Description 获取托盘类型下拉选项(用于合托查询筛选)- rqrq + * @Title getPalletTypeOptions + * @param data 查询条件(包含site) + * @return R + * @author rqrq + * @date 2026/01/06 + */ + @PostMapping(value = "/getPalletTypeOptions") + public R getPalletTypeOptions(@RequestBody PalletMergeQueryData data) throws Exception { + List rows = palletMergeQueryService.getPalletTypeOptions(data.getSite()); + return R.ok().put("rows", rows); + } + + /** + * @Description 查询需要合托的托盘列表 - rqrq + * @Title searchPalletMergeList + * @param data 查询条件(包含site和palletType) + * @return R + * @author rqrq + * @date 2026/01/06 + */ + @PostMapping(value = "/searchPalletMergeList") + public R searchPalletMergeList(@RequestBody PalletMergeQueryData data) throws Exception { + List rows = palletMergeQueryService.searchPalletMergeList(data); + return R.ok().put("rows", rows); + } + + /** + * @Description 提交合托请求(预留方法)- rqrq + * @Title submitPalletMerge + * @param dataList 选中的托盘列表 + * @return R + * @author rqrq + * @date 2026/01/06 + */ + @PostMapping(value = "/submitPalletMerge") + public R submitPalletMerge(@RequestBody List dataList) throws Exception { + // TODO: 后续实现合托逻辑 - rqrq + return R.ok(); + } +} + diff --git a/src/main/java/com/gaotao/modules/automatedWarehouse/entity/PalletMergeQueryData.java b/src/main/java/com/gaotao/modules/automatedWarehouse/entity/PalletMergeQueryData.java new file mode 100644 index 0000000..5a558a1 --- /dev/null +++ b/src/main/java/com/gaotao/modules/automatedWarehouse/entity/PalletMergeQueryData.java @@ -0,0 +1,83 @@ +package com.gaotao.modules.automatedWarehouse.entity; + +import lombok.Data; +import org.apache.ibatis.type.Alias; + +/** + * @Description 合托查询业务实体类 - 用于查询需要合托的托盘 - rqrq + * + *

用途:

+ *
    + *
  • 查询立库中可以合托的栈板列表
  • + *
  • 根据pallet_type筛选,只显示未装满的栈板
  • + *
  • 按已用位置数量从小到大排序
  • + *
+ * + *

查询逻辑:

+ *
+ * 1. 先计算该pallet_type在立库中装得最多的栈板的position+layer count
+ * 2. 查询立库中该类型的栈板,count>0 且 count<最大count
+ * 3. 按count从小到大排序
+ * 
+ * + * @Author rqrq + * @Date 2026/01/06 + */ +@Data +@Alias("PalletMergeQueryData") +public class PalletMergeQueryData { + + // ==================== 查询条件字段 ==================== + + /** + * 工厂编码(必需) + */ + private String site; + + /** + * 托盘类型编码(必选,下拉框选择) + *

SQL示例:WHERE p.pallet_type = #{palletType}

+ */ + private String palletType; + + // ==================== 返回字段 ==================== + + /** + * 托盘ID + */ + private String palletId; + + /** + * 库位编码 + */ + private String locationCode; + + /** + * 调用标志(Y=正在被调用, N=未被调用) + */ + private String callingFlag; + + /** + * 已用位置数量(position+layer的唯一组合数) + *

用于排序,从小到大显示

+ */ + private Integer usedPositionCount; + + /** + * 托盘类型描述(关联pallet_type表) + */ + private String typeDesc; + + // ==================== 分页参数 ==================== + + /** + * 分页参数 - 当前页码 + */ + private Integer page; + + /** + * 分页参数 - 每页数量 + */ + private Integer limit; +} + diff --git a/src/main/java/com/gaotao/modules/automatedWarehouse/entity/PalletTypeOption.java b/src/main/java/com/gaotao/modules/automatedWarehouse/entity/PalletTypeOption.java new file mode 100644 index 0000000..40dffaa --- /dev/null +++ b/src/main/java/com/gaotao/modules/automatedWarehouse/entity/PalletTypeOption.java @@ -0,0 +1,32 @@ +package com.gaotao.modules.automatedWarehouse.entity; + +import lombok.Data; +import org.apache.ibatis.type.Alias; + +/** + * @Description 托盘类型下拉选项实体类 - 用于合托查询的下拉框 - rqrq + * + *

用途:

+ *
    + *
  • 提供合托查询页面的托盘类型下拉选项
  • + *
  • 筛选条件:wcs_auto_sort='Y' 且 pallet_family != 'A02'
  • + *
+ * + * @Author rqrq + * @Date 2026/01/06 + */ +@Data +@Alias("PalletTypeOption") +public class PalletTypeOption { + + /** + * 托盘类型编码(下拉框value) + */ + private String palletType; + + /** + * 类型描述(下拉框label) + */ + private String typeDesc; +} + diff --git a/src/main/java/com/gaotao/modules/automatedWarehouse/mapper/PalletMergeQueryMapper.java b/src/main/java/com/gaotao/modules/automatedWarehouse/mapper/PalletMergeQueryMapper.java new file mode 100644 index 0000000..2f4e492 --- /dev/null +++ b/src/main/java/com/gaotao/modules/automatedWarehouse/mapper/PalletMergeQueryMapper.java @@ -0,0 +1,51 @@ +package com.gaotao.modules.automatedWarehouse.mapper; + +import com.gaotao.modules.automatedWarehouse.entity.PalletMergeQueryData; +import com.gaotao.modules.automatedWarehouse.entity.PalletTypeOption; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Description 合托查询Mapper接口 - rqrq + * @Author rqrq + * @Date 2026/01/06 + */ +@Mapper +public interface PalletMergeQueryMapper { + + /** + * @Description 获取托盘类型下拉选项(wcs_auto_sort='Y' 且 pallet_family != 'A02')- rqrq + * @param site 工厂编码 + * @return List + * @author rqrq + * @date 2026/01/06 + */ + List getPalletTypeOptions(@Param("site") String site); + + /** + * @Description 获取该类型在立库中装得最多的栈板的已用位置数 - rqrq + * @param site 工厂编码 + * @param palletType 托盘类型 + * @return Integer 最大已用位置数 + * @author rqrq + * @date 2026/01/06 + */ + Integer getMaxPositionCount(@Param("site") String site, @Param("palletType") String palletType); + + /** + * @Description 查询需要合托的托盘列表 - rqrq + * @param site 工厂编码 + * @param palletType 托盘类型 + * @param maxPositionCount 最大已用位置数 + * @return List + * @author rqrq + * @date 2026/01/06 + */ + List searchPalletMergeList( + @Param("site") String site, + @Param("palletType") String palletType, + @Param("maxPositionCount") Integer maxPositionCount); +} + diff --git a/src/main/java/com/gaotao/modules/automatedWarehouse/service/PalletMergeQueryService.java b/src/main/java/com/gaotao/modules/automatedWarehouse/service/PalletMergeQueryService.java new file mode 100644 index 0000000..0f3cb97 --- /dev/null +++ b/src/main/java/com/gaotao/modules/automatedWarehouse/service/PalletMergeQueryService.java @@ -0,0 +1,35 @@ +package com.gaotao.modules.automatedWarehouse.service; + +import com.gaotao.modules.automatedWarehouse.entity.PalletMergeQueryData; +import com.gaotao.modules.automatedWarehouse.entity.PalletTypeOption; + +import java.util.List; + +/** + * @Description 合托查询Service接口 - rqrq + * @Author rqrq + * @Date 2026/01/06 + */ +public interface PalletMergeQueryService { + + /** + * @Description 获取托盘类型下拉选项(用于合托查询筛选)- rqrq + * @Title getPalletTypeOptions + * @param site 工厂编码 + * @return List + * @author rqrq + * @date 2026/01/06 + */ + List getPalletTypeOptions(String site); + + /** + * @Description 查询需要合托的托盘列表 - rqrq + * @Title searchPalletMergeList + * @param data 查询条件(包含site和palletType) + * @return List + * @author rqrq + * @date 2026/01/06 + */ + List searchPalletMergeList(PalletMergeQueryData data); +} + 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 new file mode 100644 index 0000000..094a471 --- /dev/null +++ b/src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/PalletMergeQueryServiceImpl.java @@ -0,0 +1,96 @@ +package com.gaotao.modules.automatedWarehouse.service.impl; + +import com.gaotao.modules.automatedWarehouse.entity.PalletMergeQueryData; +import com.gaotao.modules.automatedWarehouse.entity.PalletTypeOption; +import com.gaotao.modules.automatedWarehouse.mapper.PalletMergeQueryMapper; +import com.gaotao.modules.automatedWarehouse.service.PalletMergeQueryService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description 合托查询Service实现类 - rqrq + * @Author rqrq + * @Date 2026/01/06 + */ +@Service +public class PalletMergeQueryServiceImpl implements PalletMergeQueryService { + + @Autowired + private PalletMergeQueryMapper palletMergeQueryMapper; + + /** + * @Description 获取托盘类型下拉选项(用于合托查询筛选)- rqrq + * @Title getPalletTypeOptions + * @param site 工厂编码 + * @return List + * @author rqrq + * @date 2026/01/06 + */ + @Override + public List getPalletTypeOptions(String site) { + System.out.println("开始获取合托查询托盘类型下拉选项 - rqrq,site=" + site); + + // 参数校验 - rqrq + if (!StringUtils.hasText(site)) { + throw new RuntimeException("工厂编码不能为空"); + } + + // 查询数据:wcs_auto_sort='Y' 且 pallet_family != 'A02' - rqrq + List list = palletMergeQueryMapper.getPalletTypeOptions(site); + + System.out.println("获取合托查询托盘类型下拉选项完成,共" + list.size() + "条记录 - rqrq"); + return list; + } + + /** + * @Description 查询需要合托的托盘列表 - rqrq + * + *

查询逻辑:

+ *
    + *
  1. 先计算该pallet_type在立库中装得最多的栈板的position+layer count
  2. + *
  3. 查询立库中该类型的栈板,count>0 且 count<最大count
  4. + *
  5. 只查询calling_flag='N'的栈板
  6. + *
  7. 按count从小到大排序
  8. + *
+ * + * @Title searchPalletMergeList + * @param data 查询条件(包含site和palletType) + * @return List + * @author rqrq + * @date 2026/01/06 + */ + @Override + public List searchPalletMergeList(PalletMergeQueryData data) { + System.out.println("开始查询需要合托的托盘列表 - rqrq,site=" + data.getSite() + ", palletType=" + data.getPalletType()); + + // 参数校验 - rqrq + if (!StringUtils.hasText(data.getSite())) { + throw new RuntimeException("工厂编码不能为空"); + } + if (!StringUtils.hasText(data.getPalletType())) { + throw new RuntimeException("托盘类型不能为空"); + } + + // Step 1: 计算该类型在立库中装得最多的栈板的position+layer count - rqrq + Integer maxPositionCount = palletMergeQueryMapper.getMaxPositionCount(data.getSite(), data.getPalletType()); + System.out.println("该类型最大已用位置数: " + maxPositionCount + " - rqrq"); + + // 如果没有任何栈板或最大count为0,返回空列表 - rqrq + if (maxPositionCount == null || maxPositionCount <= 0) { + System.out.println("没有找到该类型的栈板,返回空列表 - rqrq"); + return new ArrayList<>(); + } + + // Step 2: 查询count>0 且 count<最大count的栈板,按count从小到大排序 - rqrq + List list = palletMergeQueryMapper.searchPalletMergeList( + data.getSite(), data.getPalletType(), maxPositionCount); + + System.out.println("查询需要合托的托盘列表完成,共" + list.size() + "条记录 - rqrq"); + return list; + } +} + diff --git a/src/main/resources/mapper/automatedWarehouse/PalletMergeQueryMapper.xml b/src/main/resources/mapper/automatedWarehouse/PalletMergeQueryMapper.xml new file mode 100644 index 0000000..3fb7cba --- /dev/null +++ b/src/main/resources/mapper/automatedWarehouse/PalletMergeQueryMapper.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + +