| | |
| | | .eqIfPresent(MesWmTransactionDO::getBizType, reqVO.getBizType()) |
| | | .likeIfPresent(MesWmTransactionDO::getBizCode, reqVO.getBizCode()) |
| | | .eqIfPresent(MesWmTransactionDO::getMaterialStockId, reqVO.getMaterialStockId()) |
| | | .eqIfPresent(MesWmTransactionDO::getSnCode, reqVO.getSnCode()) |
| | | .geIfPresent(MesWmTransactionDO::getTransactionTime, reqVO.getStartTime()) |
| | | .leIfPresent(MesWmTransactionDO::getTransactionTime, reqVO.getEndTime()) |
| | | .orderByDesc(MesWmTransactionDO::getTransactionTime)); |
| | | } |
| | | |
| | | /** |
| | | * 按 SN 码查询最近一笔库存事务 |
| | | * |
| | | * @param snCode SN 码 |
| | | * @return 最近一笔事务,不存在返回 null |
| | | */ |
| | | default MesWmTransactionDO selectLatestBySnCode(String snCode) { |
| | | return selectOne(new LambdaQueryWrapperX<MesWmTransactionDO>() |
| | | .eq(MesWmTransactionDO::getSnCode, snCode) |
| | | .orderByDesc(MesWmTransactionDO::getTransactionTime) |
| | | .orderByDesc(MesWmTransactionDO::getId) |
| | | .last("LIMIT 1")); |
| | | } |
| | | |
| | | /** |
| | | * 查找虚拟线边库库存记录对应的原始出库仓库信息 |
| | | * <p> |
| | | * 通过虚拟线边库的 materialStockId,找到首次入库事务(IN), |
| | | * 再通过 relatedTransactionId 找到关联的出库事务(OUT), |
| | | * 获取物料从哪个实际仓库出库进入虚拟线边库的。 |
| | | * |
| | | * @param materialStockId 虚拟线边库库存记录 ID |
| | | * @return 原始出库事务(包含 warehouseId/locationId/areaId),不存在返回 null |
| | | */ |
| | | default MesWmTransactionDO selectOriginalOutTransaction(Long materialStockId) { |
| | | // 1. 找到该库存记录的首次入库事务 |
| | | MesWmTransactionDO firstInTransaction = selectOne(new LambdaQueryWrapperX<MesWmTransactionDO>() |
| | | .eq(MesWmTransactionDO::getMaterialStockId, materialStockId) |
| | | .eq(MesWmTransactionDO::getType, 1) // IN |
| | | .orderByAsc(MesWmTransactionDO::getId) |
| | | .last("LIMIT 1")); |
| | | if (firstInTransaction == null || firstInTransaction.getRelatedTransactionId() == null) { |
| | | return null; |
| | | } |
| | | // 2. 通过 relatedTransactionId 找到原始出库事务 |
| | | return selectById(firstInTransaction.getRelatedTransactionId()); |
| | | } |
| | | |
| | | } |