package cn.iocoder.yudao.module.mes.dal.mysql.wm.sorting; 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.sorting.vo.MesWmSortTaskPageReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.sorting.MesWmSortTaskDO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.sorting.MesWmSortWarehouseStatisticsDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.time.LocalDateTime; import java.util.List; /** * MES 分拣任务 Mapper */ @Mapper public interface MesWmSortTaskMapper extends BaseMapperX { default PageResult selectPage(MesWmSortTaskPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() .likeIfPresent(MesWmSortTaskDO::getCode, reqVO.getCode()) .likeIfPresent(MesWmSortTaskDO::getNoticeCode, reqVO.getNoticeCode()) .likeIfPresent(MesWmSortTaskDO::getSaleOrderCode, reqVO.getSaleOrderCode()) .likeIfPresent(MesWmSortTaskDO::getRecipientName, reqVO.getRecipientName()) .eqIfPresent(MesWmSortTaskDO::getStatus, reqVO.getStatus()) .betweenIfPresent(MesWmSortTaskDO::getCreateTime, reqVO.getCreateTime()) .orderByDesc(MesWmSortTaskDO::getId)); } default MesWmSortTaskDO selectByNoticeId(Long noticeId) { return selectOne(new LambdaQueryWrapperX() .eq(MesWmSortTaskDO::getNoticeId, noticeId) .ne(MesWmSortTaskDO::getStatus, cn.iocoder.yudao.module.mes.enums.wm.MesWmSortTaskStatusEnum.CANCELED.getStatus()) .last("LIMIT 1")); } default MesWmSortTaskDO selectByCode(String code) { return selectOne(MesWmSortTaskDO::getCode, code); } /** * 按仓库统计已完成的分拣任务(需求 6.7④ 分拣出库统计) * * 只统计已完成(status=3)的分拣任务,按明细行上的仓库汇总任务数、计划/实际分拣数量 */ @Select("") List selectWarehouseStatistics(@Param("warehouseId") Long warehouseId, @Param("beginTime") LocalDateTime beginTime, @Param("endTime") LocalDateTime endTime); }