From bc99d985f5bcf6995a79904f8e043e613576e326 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Fri, 6 Mar 2026 11:41:07 +0800 Subject: [PATCH] =?UTF-8?q?feat(wms):=20=E6=B7=BB=E5=8A=A0=E6=8C=89?= =?UTF-8?q?=E9=92=A2=E5=8D=B7ID=E6=9F=A5=E8=AF=A2=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 IWmsCoilWarehouseOperationLogService 中新增 queryByCoilId 方法 - 在 WmsCoilWarehouseOperationLogController 中新增 /byCoilId 接口 - 在 WmsCoilWarehouseOperationLogServiceImpl 中实现按钢卷ID查询逻辑 - 实现关联查询钢卷信息和库区信息的功能 - 支持按操作类型、出入库类型、时间范围进行筛选 - 将原有仓库ID查询接口的参数改为可选参数 --- ...msCoilWarehouseOperationLogController.java | 23 ++++++++- .../IWmsCoilWarehouseOperationLogService.java | 12 +++++ ...sCoilWarehouseOperationLogServiceImpl.java | 51 +++++++++++++++++++ 3 files changed, 84 insertions(+), 2 deletions(-) diff --git a/klp-wms/src/main/java/com/klp/controller/WmsCoilWarehouseOperationLogController.java b/klp-wms/src/main/java/com/klp/controller/WmsCoilWarehouseOperationLogController.java index 6f206561..af1d0cd1 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsCoilWarehouseOperationLogController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsCoilWarehouseOperationLogController.java @@ -126,10 +126,29 @@ public class WmsCoilWarehouseOperationLogController extends BaseController { @GetMapping("/byWarehouseAndTime") public R> getByWarehouseAndTime( @RequestParam Long secondWarehouseId, - @RequestParam Integer operationType, - @RequestParam Integer inOutType, + @RequestParam(required = false) Integer operationType, + @RequestParam(required = false) Integer inOutType, @RequestParam(required = false) Date startTime, @RequestParam(required = false) Date endTime) { return R.ok(iWmsCoilWarehouseOperationLogService.queryBySecondWarehouseIdAndTimeRange(secondWarehouseId, operationType, inOutType, startTime, endTime)); } + + /** + * 根据钢卷ID查询操作记录及钢卷信息、库区信息 + * + * @param coilId 钢卷ID + * @param operationType 操作类型 + * @param inOutType 出入库类型 + * @param startTime 开始时间 + * @param endTime 结束时间 + */ + @GetMapping("/byCoilId") + public R> getByCoilId( + @RequestParam @NotNull(message = "钢卷ID不能为空") Long coilId, + @RequestParam(required = false) Integer operationType, + @RequestParam(required = false) Integer inOutType, + @RequestParam(required = false) Date startTime, + @RequestParam(required = false) Date endTime) { + return R.ok(iWmsCoilWarehouseOperationLogService.queryByCoilId(coilId, operationType, inOutType, startTime, endTime)); + } } diff --git a/klp-wms/src/main/java/com/klp/service/IWmsCoilWarehouseOperationLogService.java b/klp-wms/src/main/java/com/klp/service/IWmsCoilWarehouseOperationLogService.java index 1da1e75f..bd43c008 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsCoilWarehouseOperationLogService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsCoilWarehouseOperationLogService.java @@ -60,4 +60,16 @@ public interface IWmsCoilWarehouseOperationLogService { * @return 操作记录列表(含钢卷信息和库区信息) */ List queryBySecondWarehouseIdAndTimeRange(Long secondWarehouseId, Integer operationType, Integer inOutType, Date startTime, Date endTime); + + /** + * 根据钢卷ID查询操作记录及钢卷信息、库区信息 + * + * @param coilId 钢卷ID + * @param operationType 操作类型 + * @param inOutType 出入库类型 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 操作记录列表(含钢卷信息和库区信息) + */ + List queryByCoilId(Long coilId, Integer operationType, Integer inOutType, Date startTime, Date endTime); } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsCoilWarehouseOperationLogServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsCoilWarehouseOperationLogServiceImpl.java index 4dcbfa5c..1f6a0ecc 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsCoilWarehouseOperationLogServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsCoilWarehouseOperationLogServiceImpl.java @@ -207,4 +207,55 @@ public class WmsCoilWarehouseOperationLogServiceImpl implements IWmsCoilWarehous } return result; } + + @Override + public List queryByCoilId(Long coilId, Integer operationType, Integer inOutType, Date startTime, Date endTime) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(WmsCoilWarehouseOperationLog::getCoilId, coilId); + lqw.eq(operationType != null, WmsCoilWarehouseOperationLog::getOperationType, operationType); + lqw.eq(inOutType != null, WmsCoilWarehouseOperationLog::getInOutType, inOutType); + lqw.ge(startTime != null, WmsCoilWarehouseOperationLog::getCreateTime, startTime); + lqw.le(endTime != null, WmsCoilWarehouseOperationLog::getCreateTime, endTime); + lqw.orderByDesc(WmsCoilWarehouseOperationLog::getCreateTime); + + List list = baseMapper.selectVoList(lqw); + + Set coilIds = list.stream() + .map(WmsCoilWarehouseOperationLogVo::getCoilId) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + + Set warehouseIds = list.stream() + .map(WmsCoilWarehouseOperationLogVo::getActualWarehouseId) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + + Map coilMap = new HashMap<>(); + if (!coilIds.isEmpty()) { + WmsMaterialCoilBo bo = new WmsMaterialCoilBo(); + bo.setCoilIds(coilIds.stream().map(String::valueOf).collect(Collectors.joining(","))); + List coils = wmsMaterialCoilService.queryList(bo); + for (WmsMaterialCoilVo coil : coils) { + coilMap.put(coil.getCoilId(), coil); + } + } + + Map warehouseMap = new HashMap<>(); + if (!warehouseIds.isEmpty()) { + LambdaQueryWrapper warehouseQuery = Wrappers.lambdaQuery(); + warehouseQuery.in(WmsActualWarehouse::getActualWarehouseId, warehouseIds); + List warehouses = wmsActualWarehouseMapper.selectList(warehouseQuery); + for (WmsActualWarehouse warehouse : warehouses) { + WmsActualWarehouseVo vo = BeanUtil.toBean(warehouse, WmsActualWarehouseVo.class); + warehouseMap.put(warehouse.getActualWarehouseId(), vo); + } + } + + for (WmsCoilWarehouseOperationLogVo vo : list) { + vo.setCoil(coilMap.get(vo.getCoilId())); + vo.setWarehouse(warehouseMap.get(vo.getActualWarehouseId())); + } + + return list; + } }