| | |
| | | /** |
| | | * ERP 采购订单 Mapper |
| | | * |
| | | * @author 芋道源码 |
| | | * @author 超级管理员 |
| | | */ |
| | | @Mapper |
| | | public interface ErpPurchaseOrderMapper extends BaseMapperX<ErpPurchaseOrderDO> { |
| | |
| | | .eqIfPresent(ErpPurchaseOrderDO::getStatus, reqVO.getStatus()) |
| | | .likeIfPresent(ErpPurchaseOrderDO::getRemark, reqVO.getRemark()) |
| | | .eqIfPresent(ErpPurchaseOrderDO::getCreator, reqVO.getCreator()) |
| | | .eqIfPresent(ErpPurchaseOrderDO::getContractId, reqVO.getContractId()) |
| | | .eqIfPresent(ErpPurchaseOrderDO::getPaymentMethod, reqVO.getPaymentMethod()) |
| | | .likeIfPresent(ErpPurchaseOrderDO::getLogisticsNo, reqVO.getLogisticsNo()) |
| | | .eqIfPresent(ErpPurchaseOrderDO::getAbnormalFlag, reqVO.getAbnormalFlag()) |
| | | .orderByDesc(ErpPurchaseOrderDO::getId); |
| | | // 入库状态。为什么需要 t. 的原因,是因为联表查询时,需要指定表名,不然会报 in_count 错误 |
| | | if (Objects.equals(reqVO.getInStatus(), ErpPurchaseOrderPageReqVO.IN_STATUS_NONE)) { |
| | |
| | | query.eq(ErpPurchaseOrderDO::getStatus, ErpAuditStatus.APPROVE.getStatus()) |
| | | .apply("t.return_count < t.in_count"); |
| | | } |
| | | // 可来票登记(剩余可开票金额 > 0):金额已开完的订单不展示 |
| | | if (Boolean.TRUE.equals(reqVO.getRemainPriceEnable())) { |
| | | query.apply("t.total_price > (SELECT IFNULL(SUM(i.price), 0) FROM erp_purchase_invoice i " |
| | | + "WHERE i.purchase_order_id = t.id AND i.deleted = 0)"); |
| | | } |
| | | if (reqVO.getProductId() != null) { |
| | | query.leftJoin(ErpPurchaseOrderItemDO.class, ErpPurchaseOrderItemDO::getOrderId, ErpPurchaseOrderDO::getId) |
| | | .eq(reqVO.getProductId() != null, ErpPurchaseOrderItemDO::getProductId, reqVO.getProductId()) |
| | |
| | | .eq(ErpPurchaseOrderDO::getId, id).eq(ErpPurchaseOrderDO::getStatus, status)); |
| | | } |
| | | |
| | | default List<ErpPurchaseOrderDO> selectListByContractId(Long contractId) { |
| | | return selectList(new LambdaQueryWrapperX<ErpPurchaseOrderDO>() |
| | | .eq(ErpPurchaseOrderDO::getContractId, contractId)); |
| | | } |
| | | |
| | | default long selectCountByContractId(Long contractId) { |
| | | return selectCount(new LambdaQueryWrapperX<ErpPurchaseOrderDO>() |
| | | .eq(ErpPurchaseOrderDO::getContractId, contractId)); |
| | | } |
| | | |
| | | default ErpPurchaseOrderDO selectByNo(String no) { |
| | | return selectOne(ErpPurchaseOrderDO::getNo, no); |
| | | } |
| | | |
| | | default ErpPurchaseOrderDO selectByProcessInstanceId(String processInstanceId) { |
| | | return selectOne(ErpPurchaseOrderDO::getProcessInstanceId, processInstanceId); |
| | | } |
| | | |
| | | default List<ErpPurchaseOrderDO> selectList(Long supplierId, Integer status) { |
| | |
| | | .orderByDesc(ErpPurchaseOrderDO::getId)); |
| | | } |
| | | |
| | | /** |
| | | * 按来源查询采购订单(用于追溯来源工单对应的采购订单) |
| | | */ |
| | | default List<ErpPurchaseOrderDO> selectListBySource(Integer sourceType, Long sourceId) { |
| | | return selectList(new LambdaQueryWrapperX<ErpPurchaseOrderDO>() |
| | | .eq(ErpPurchaseOrderDO::getSourceType, sourceType) |
| | | .eq(ErpPurchaseOrderDO::getSourceId, sourceId)); |
| | | } |
| | | |
| | | } |