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 * * @author 芋道源码 */ @Mapper public interface MesWmProductSalesLineMapper extends BaseMapperX { default List selectListBySalesId(Long salesId) { return selectList(MesWmProductSalesLineDO::getSalesId, salesId); } default void deleteBySalesId(Long salesId) { delete(MesWmProductSalesLineDO::getSalesId, salesId); } default cn.iocoder.yudao.framework.common.pojo.PageResult selectPage( cn.iocoder.yudao.module.mes.controller.admin.wm.productsales.vo.line.MesWmProductSalesLinePageReqVO reqVO) { return selectPage(reqVO, new cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX() .eqIfPresent(MesWmProductSalesLineDO::getSalesId, reqVO.getSalesId()) .inIfPresent(MesWmProductSalesLineDO::getSalesId, reqVO.getSalesIds()) .orderByDesc(MesWmProductSalesLineDO::getId)); } /** * 根据销售订单明细 ID 列表查询出库行,按 saleOrderItemId 分组返回批号 */ default Map selectBatchCodesBySaleOrderItemIds(java.util.Collection saleOrderItemIds) { if (saleOrderItemIds == null || saleOrderItemIds.isEmpty()) { return java.util.Collections.emptyMap(); } List lines = selectList(new LambdaQueryWrapperX() .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 ids, Integer qualityStatus) { update(new MesWmProductSalesLineDO().setQualityStatus(qualityStatus), new LambdaUpdateWrapper().in(MesWmProductSalesLineDO::getId, ids)); } }