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;
|
|
/**
|
* MES 销售退货单行 Mapper
|
*
|
* @author 超级管理员
|
*/
|
@Mapper
|
public interface MesWmReturnSalesLineMapper extends BaseMapperX<MesWmReturnSalesLineDO> {
|
|
default PageResult<MesWmReturnSalesLineDO> selectPage(MesWmReturnSalesLinePageReqVO reqVO) {
|
return selectPage(reqVO, new LambdaQueryWrapperX<MesWmReturnSalesLineDO>()
|
.eqIfPresent(MesWmReturnSalesLineDO::getReturnId, reqVO.getReturnId())
|
.eqIfPresent(MesWmReturnSalesLineDO::getItemId, reqVO.getItemId())
|
.orderByDesc(MesWmReturnSalesLineDO::getId));
|
}
|
|
default List<MesWmReturnSalesLineDO> selectListByReturnId(Long returnId) {
|
return selectList(new LambdaQueryWrapperX<MesWmReturnSalesLineDO>()
|
.eq(MesWmReturnSalesLineDO::getReturnId, returnId));
|
}
|
|
default void deleteByReturnId(Long returnId) {
|
delete(new LambdaQueryWrapperX<MesWmReturnSalesLineDO>()
|
.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);
|
|
}
|