云
3 天以前 5d818f39c862884b7087488d588fef5b7ce47386
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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);
 
}