云
4 天以前 5d818f39c862884b7087488d588fef5b7ce47386
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/returnsales/MesWmReturnSalesLineMapper.java
@@ -1,12 +1,17 @@
package cn.iocoder.yudao.module.mes.dal.mysql.wm.returnsales;
import cn.iocoder.yudao.framework.common.core.KeyValue;
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.returnsales.vo.line.MesWmReturnSalesLinePageReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnsales.MesWmReturnSalesLineDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.List;
/**
@@ -34,4 +39,31 @@
                .eq(MesWmReturnSalesLineDO::getReturnId, returnId));
    }
    default List<MesWmReturnSalesLineDO> selectListByProductSalesLineIds(Collection<Long> productSalesLineIds) {
        return selectList(new LambdaQueryWrapperX<MesWmReturnSalesLineDO>()
                .in(MesWmReturnSalesLineDO::getProductSalesLineId, productSalesLineIds));
    }
    /**
     * 统计每个销售出库行已被退货的数量:排除已取消的退货单和已删除的行
     *
     * @param productSalesLineIds 销售出库行 ID 集合
     * @param canceledStatus      退货单已取消状态
     * @param excludeReturnId     需要排除的退货单 ID(校验当前退货单自身的可退数量时使用),可为空
     * @return key=销售出库行 ID,value=已退数量
     */
    @Select("<script>" +
            "SELECT rl.product_sales_line_id AS `key`, IFNULL(SUM(rl.quantity), 0) AS `value` " +
            "FROM mes_wm_return_sales_line rl " +
            "INNER JOIN mes_wm_return_sales rs ON rs.id = rl.return_id AND rs.deleted = 0 AND rs.status != #{canceledStatus} " +
            "<if test='excludeReturnId != null'>AND rs.id != #{excludeReturnId} </if>" +
            "WHERE rl.deleted = 0 AND rl.product_sales_line_id IN " +
            "<foreach collection='productSalesLineIds' item='id' open='(' separator=',' close=')'>#{id}</foreach> " +
            "GROUP BY rl.product_sales_line_id" +
            "</script>")
    List<KeyValue<Long, BigDecimal>> selectReturnedQuantityList(
            @Param("productSalesLineIds") Collection<Long> productSalesLineIds,
            @Param("canceledStatus") Integer canceledStatus,
            @Param("excludeReturnId") Long excludeReturnId);
}