package cn.iocoder.yudao.module.mes.dal.mysql.wm.scrap; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.scrap.MesWmScrapReceiptDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.time.LocalDateTime; import java.util.List; import java.util.Map; @Mapper public interface MesWmScrapReceiptMapper extends BaseMapperX { @Select("SELECT l.item_id AS itemId, l.batch_id AS batchId, l.batch_code AS batchCode, SUM(l.quantity) AS quantity FROM mes_wm_product_produce p " + "JOIN mes_wm_product_produce_line l ON l.produce_id=p.id AND l.deleted=0 " + "WHERE p.deleted=0 AND p.work_order_id=#{orderId} AND p.status=#{finished} " + "AND l.item_id IS NOT NULL AND l.quantity > 0 GROUP BY l.item_id,l.batch_id,l.batch_code") List selectOrderOutputs( @Param("orderId") Long orderId, @Param("finished") Integer finished); default MesWmScrapReceiptDO selectByCode(String code) { return selectOne(MesWmScrapReceiptDO::getCode, code); } @Select("SELECT COUNT(*) FROM mes_wm_scrap_receipt r JOIN mes_wm_transaction t " + "ON t.id = r.transaction_id AND t.deleted = 0 " + "WHERE r.deleted = 0 AND t.material_stock_id = #{stockId}") long countByStockId(@Param("stockId") Long stockId); default PageResult selectReceiptPage(PageParam page, Long workOrderId) { return selectPage(page, new LambdaQueryWrapperX() .eqIfPresent(MesWmScrapReceiptDO::getWorkOrderId, workOrderId) .orderByDesc(MesWmScrapReceiptDO::getId)); } @Select("SELECT work_order_id AS workOrderId, work_order_code AS workOrderCode, item_id AS itemId, " + "SUM(quantity) AS quantity FROM mes_wm_scrap_receipt " + "WHERE deleted = 0 AND receipt_time >= #{start} AND receipt_time < #{end} " + "GROUP BY work_order_id, work_order_code, item_id ORDER BY work_order_code, item_id") List> summarize(@Param("start") LocalDateTime start, @Param("end") LocalDateTime end); }