| | |
| | | package cn.iocoder.yudao.module.mes.dal.mysql.wm.transaction; |
| | | |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| | | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.wm.transaction.vo.MesWmTransactionPageReqVO; |
| | | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.transaction.MesWmTransactionDO; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | |
| | |
| | | @Mapper |
| | | public interface MesWmTransactionMapper extends BaseMapperX<MesWmTransactionDO> { |
| | | |
| | | default PageResult<MesWmTransactionDO> selectPage(MesWmTransactionPageReqVO reqVO) { |
| | | return selectPage(reqVO, new LambdaQueryWrapperX<MesWmTransactionDO>() |
| | | .eqIfPresent(MesWmTransactionDO::getItemId, reqVO.getItemId()) |
| | | .likeIfPresent(MesWmTransactionDO::getBatchCode, reqVO.getBatchCode()) |
| | | .eqIfPresent(MesWmTransactionDO::getWarehouseId, reqVO.getWarehouseId()) |
| | | .eqIfPresent(MesWmTransactionDO::getLocationId, reqVO.getLocationId()) |
| | | .eqIfPresent(MesWmTransactionDO::getAreaId, reqVO.getAreaId()) |
| | | .eqIfPresent(MesWmTransactionDO::getType, reqVO.getType()) |
| | | .eqIfPresent(MesWmTransactionDO::getBizType, reqVO.getBizType()) |
| | | .likeIfPresent(MesWmTransactionDO::getBizCode, reqVO.getBizCode()) |
| | | .eqIfPresent(MesWmTransactionDO::getMaterialStockId, reqVO.getMaterialStockId()) |
| | | .geIfPresent(MesWmTransactionDO::getTransactionTime, reqVO.getStartTime()) |
| | | .leIfPresent(MesWmTransactionDO::getTransactionTime, reqVO.getEndTime()) |
| | | .orderByDesc(MesWmTransactionDO::getTransactionTime)); |
| | | } |
| | | |
| | | /** |
| | | * 查找虚拟线边库库存记录对应的原始出库仓库信息 |
| | | * <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()); |
| | | } |
| | | |
| | | } |