package cn.iocoder.yudao.module.mes.dal.mysql.pro.workorder; import cn.hutool.core.collection.CollUtil; 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.pro.workorder.vo.MesProWorkOrderPageReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.apache.ibatis.annotations.Mapper; import java.math.BigDecimal; import java.util.List; /** * MES 生产工单 Mapper * * @author 芋道源码 */ @Mapper public interface MesProWorkOrderMapper extends BaseMapperX { default PageResult selectPage(MesProWorkOrderPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() .likeIfPresent(MesProWorkOrderDO::getCode, reqVO.getCode()) .likeIfPresent(MesProWorkOrderDO::getName, reqVO.getName()) .eqIfPresent(MesProWorkOrderDO::getType, reqVO.getType()) .likeIfPresent(MesProWorkOrderDO::getOrderSourceCode, reqVO.getOrderSourceCode()) .eqIfPresent(MesProWorkOrderDO::getProductId, reqVO.getProductId()) .eqIfPresent(MesProWorkOrderDO::getClientId, reqVO.getClientId()) .eqIfPresent(MesProWorkOrderDO::getStatus, reqVO.getStatus()) .betweenIfPresent(MesProWorkOrderDO::getRequestDate, reqVO.getRequestDate()) .orderByDesc(MesProWorkOrderDO::getId)); } /** * 分页查询(带客户权限过滤) */ default PageResult selectPage(MesProWorkOrderPageReqVO reqVO, List permittedClientIds) { LambdaQueryWrapperX wrapper = new LambdaQueryWrapperX() .likeIfPresent(MesProWorkOrderDO::getCode, reqVO.getCode()) .likeIfPresent(MesProWorkOrderDO::getName, reqVO.getName()) .eqIfPresent(MesProWorkOrderDO::getType, reqVO.getType()) .likeIfPresent(MesProWorkOrderDO::getOrderSourceCode, reqVO.getOrderSourceCode()) .eqIfPresent(MesProWorkOrderDO::getProductId, reqVO.getProductId()) .eqIfPresent(MesProWorkOrderDO::getClientId, reqVO.getClientId()) .eqIfPresent(MesProWorkOrderDO::getStatus, reqVO.getStatus()) .betweenIfPresent(MesProWorkOrderDO::getRequestDate, reqVO.getRequestDate()) .orderByDesc(MesProWorkOrderDO::getId); if (permittedClientIds != null) { if (CollUtil.isEmpty(permittedClientIds)) { return PageResult.empty(); } wrapper.in(MesProWorkOrderDO::getClientId, permittedClientIds); } return selectPage(reqVO, wrapper); } default MesProWorkOrderDO selectByCode(String code) { return selectOne(MesProWorkOrderDO::getCode, code); } default void updateProducedQuantity(Long id, BigDecimal incrQuantityProduced) { update(null, new LambdaUpdateWrapper() .eq(MesProWorkOrderDO::getId, id) .setSql("quantity_produced = IFNULL(quantity_produced, 0) + " + incrQuantityProduced)); } default Long selectCountByVendorId(Long vendorId) { return selectCount(MesProWorkOrderDO::getVendorId, vendorId); } }