云
2026-10-29 a1a94ab39a3ac9cc28601e3381b3b4fbc0cda02a
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
package cn.iocoder.yudao.module.mes.dal.mysql.wm.productsales;
 
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesDetailDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
 
import java.util.List;
 
/**
 * MES 销售出库明细 Mapper
 *
 * @author 超级管理员
 */
@Mapper
public interface MesWmProductSalesDetailMapper extends BaseMapperX<MesWmProductSalesDetailDO> {
 
    /** 只认可该订单已完成出库、且明确关联销售明细的实际拣货批次。 */
    @Select("SELECT COUNT(*) FROM mes_wm_product_sales_detail d "
            + "JOIN mes_wm_product_sales s ON s.id = d.sales_id AND s.deleted = 0 "
            + "JOIN mes_wm_product_sales_line l ON l.id = d.line_id AND l.sales_id = s.id AND l.deleted = 0 "
            + "JOIN erp_sale_order_items i ON i.id = l.sale_order_item_id AND i.order_id = s.sale_order_id AND i.deleted = 0 "
            + "JOIN mes_wm_batch b ON b.id = d.batch_id AND b.deleted = 0 AND b.item_id = d.item_id "
            + "WHERE d.deleted = 0 AND s.sale_order_id = #{orderId} AND s.status = #{finishedStatus} "
            + "AND d.item_id = #{itemId} AND l.item_id = #{itemId} AND i.product_id = #{itemId} "
            + "AND BINARY i.reel_no = BINARY b.reel_no "
            + "AND d.batch_id = #{batchId}")
    Long countFinishedSaleBatch(@Param("orderId") Long orderId, @Param("itemId") Long itemId,
                                @Param("batchId") Long batchId, @Param("finishedStatus") Integer finishedStatus);
 
    default List<MesWmProductSalesDetailDO> selectListByLineId(Long lineId) {
        return selectList(MesWmProductSalesDetailDO::getLineId, lineId);
    }
 
    default List<MesWmProductSalesDetailDO> selectListBySalesId(Long salesId) {
        return selectList(MesWmProductSalesDetailDO::getSalesId, salesId);
    }
 
    default void deleteByLineId(Long lineId) {
        delete(MesWmProductSalesDetailDO::getLineId, lineId);
    }
 
    default void deleteBySalesId(Long salesId) {
        delete(MesWmProductSalesDetailDO::getSalesId, salesId);
    }
 
}