云
15 小时以前 02a1ae81eba7b48223052fb833859f0a65dd7d21
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/pro/pallet/MesProPalletMapper.java
@@ -56,6 +56,22 @@
                .orderByAsc(MesProPalletDO::getId));
    }
    /**
     * 查询袋码绑定托盘时可选的目标托盘:未作废的临时托盘与正式托盘。
     * <p>
     * 传入品种时仅返回该品种的托盘,以及尚未确定品种的预生成临时托盘(item_id 为空,绑定袋码时回填品种)。
     *
     * @param itemId 袋码品种编号,可为空
     * @return 托盘列表
     */
    default List<MesProPalletDO> selectBindableList(Long itemId) {
        return selectList(new LambdaQueryWrapperX<MesProPalletDO>()
                .ne(MesProPalletDO::getStatus, MesProPalletStatusEnum.CANCELED.getStatus())
                .and(itemId != null, q -> q.eq(MesProPalletDO::getItemId, itemId)
                        .or().isNull(MesProPalletDO::getItemId))
                .orderByDesc(MesProPalletDO::getId));
    }
    default PageResult<MesProPalletDO> selectPage(MesProPalletPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<MesProPalletDO>()
                .likeIfPresent(MesProPalletDO::getBusinessCode, reqVO.getBusinessCode())
@@ -80,6 +96,19 @@
    @Select("SELECT IFNULL(MAX(pallet_no), 0) FROM mes_pro_pallet WHERE batch_id = #{batchId}")
    Integer selectMaxPalletNo(@Param("batchId") Long batchId);
    /**
     * 物理删除某个生成组下尚未绑定批次的临时托盘(仅用于生成失败/取消后的半成品清理)
     * <p>
     * 已绑定批次的托盘可能已被后续业务使用,即使带有生成组标记也不能删。
     *
     * @param generateUuid 生成组 UUID
     * @param limit        单次最多删除行数
     * @return 实际删除行数
     */
    @org.apache.ibatis.annotations.Delete("DELETE FROM mes_pro_pallet WHERE generate_uuid = #{generateUuid} "
            + "AND batch_id IS NULL AND code IS NULL LIMIT #{limit}")
    int deletePhysicallyByGenerateUuidChunk(@Param("generateUuid") String generateUuid, @Param("limit") int limit);
    @org.apache.ibatis.annotations.Update("UPDATE mes_pro_pallet SET sales_id = #{salesId}, outbound_time = #{outboundTime}, update_time = NOW() "
            + "WHERE id = #{id} AND deleted = 0")
    void markOutbound(@Param("id") Long id, @Param("salesId") Long salesId,