liyong
5 天以前 f90d9f53beb844265c4153159aadb0baf81bafdb
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productsales/MesWmProductSalesLineMapper.java
@@ -1,11 +1,13 @@
package cn.iocoder.yudao.module.mes.dal.mysql.wm.productsales;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesLineDO;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Map;
/**
 * MES 销售出库单行 Mapper
@@ -31,6 +33,26 @@
                .orderByDesc(MesWmProductSalesLineDO::getId));
    }
    /**
     * 根据销售订单明细 ID 列表查询出库行,按 saleOrderItemId 分组返回批号
     */
    default Map<Long, String> selectBatchCodesBySaleOrderItemIds(java.util.Collection<Long> saleOrderItemIds) {
        if (saleOrderItemIds == null || saleOrderItemIds.isEmpty()) {
            return java.util.Collections.emptyMap();
        }
        List<MesWmProductSalesLineDO> lines = selectList(new LambdaQueryWrapperX<MesWmProductSalesLineDO>()
                .in(MesWmProductSalesLineDO::getSaleOrderItemId, saleOrderItemIds));
        return lines.stream()
                .filter(l -> l.getBatchCode() != null && !l.getBatchCode().isEmpty())
                .collect(java.util.stream.Collectors.groupingBy(
                        MesWmProductSalesLineDO::getSaleOrderItemId,
                        java.util.LinkedHashMap::new,
                        java.util.stream.Collectors.collectingAndThen(
                                java.util.stream.Collectors.mapping(MesWmProductSalesLineDO::getBatchCode,
                                        java.util.stream.Collectors.toSet()),
                                codes -> String.join("、", codes))));
    }
    default void updateQualityStatusByIds(List<Long> ids, Integer qualityStatus) {
        update(new MesWmProductSalesLineDO().setQualityStatus(qualityStatus),
                new LambdaUpdateWrapper<MesWmProductSalesLineDO>().in(MesWmProductSalesLineDO::getId, ids));