| | |
| | | @Mapper |
| | | public interface MesWmProductSalesMapper extends BaseMapperX<MesWmProductSalesDO> { |
| | | |
| | | default MesWmProductSalesDO selectByIdForUpdate(Long id) { |
| | | return selectOne(new LambdaQueryWrapperX<MesWmProductSalesDO>().eq(MesWmProductSalesDO::getId, id).last("FOR UPDATE")); |
| | | } |
| | | |
| | | default PageResult<MesWmProductSalesDO> selectPage(MesWmProductSalesPageReqVO reqVO) { |
| | | return selectPage(reqVO, new LambdaQueryWrapperX<MesWmProductSalesDO>() |
| | | .likeIfPresent(MesWmProductSalesDO::getCode, reqVO.getCode()) |
| | |
| | | return selectPage(reqVO, wrapper); |
| | | } |
| | | |
| | | /** |
| | | * 分页查询可退销售出库单:仅已完成状态,且存在「出库数量 > 已退数量」的行 |
| | | */ |
| | | default PageResult<MesWmProductSalesDO> selectReturnablePage(MesWmProductSalesPageReqVO reqVO, |
| | | Integer finishedStatus, Integer canceledStatus, |
| | | List<Long> permittedClientIds) { |
| | | LambdaQueryWrapperX<MesWmProductSalesDO> wrapper = new LambdaQueryWrapperX<MesWmProductSalesDO>() |
| | | .likeIfPresent(MesWmProductSalesDO::getCode, reqVO.getCode()) |
| | | .likeIfPresent(MesWmProductSalesDO::getName, reqVO.getName()) |
| | | .eqIfPresent(MesWmProductSalesDO::getClientId, reqVO.getClientId()) |
| | | .eq(MesWmProductSalesDO::getStatus, finishedStatus) |
| | | .betweenIfPresent(MesWmProductSalesDO::getSalesDate, reqVO.getShipmentDate()) |
| | | .betweenIfPresent(MesWmProductSalesDO::getOutboundTime, reqVO.getOutboundTime()); |
| | | if (permittedClientIds != null) { |
| | | if (CollUtil.isEmpty(permittedClientIds)) { |
| | | return PageResult.empty(); |
| | | } |
| | | wrapper.in(MesWmProductSalesDO::getClientId, permittedClientIds); |
| | | } |
| | | wrapper.apply("EXISTS (SELECT 1 FROM mes_wm_product_sales_line psl " + |
| | | "WHERE psl.deleted = 0 AND psl.sales_id = mes_wm_product_sales.id AND psl.quantity > " + |
| | | "(SELECT IFNULL(SUM(rl.quantity), 0) FROM mes_wm_return_sales_line rl " + |
| | | "INNER JOIN mes_wm_return_sales rs ON rs.id = rl.return_id AND rs.deleted = 0 " + |
| | | "WHERE rl.deleted = 0 AND rl.product_sales_line_id = psl.id AND rs.status != {0}))", |
| | | canceledStatus); |
| | | wrapper.orderByDesc(MesWmProductSalesDO::getId); |
| | | return selectPage(reqVO, wrapper); |
| | | } |
| | | |
| | | default MesWmProductSalesDO selectByCode(String code) { |
| | | return selectOne(MesWmProductSalesDO::getCode, code); |
| | | } |