From 66a506c29bd43e143764cff547a59e68d4c4d8eb Mon Sep 17 00:00:00 2001 From: duanshengchao <519970194@qq.com> Date: Wed, 21 May 2025 11:31:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=B1=9E=E6=80=A7=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E8=8E=B7=E5=8F=96=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/attributeTableModel.cpp | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/source/attributeTableModel.cpp b/source/attributeTableModel.cpp index 894e36c..db906ae 100644 --- a/source/attributeTableModel.cpp +++ b/source/attributeTableModel.cpp @@ -385,16 +385,37 @@ void AttributeTableModel::loadPageData() QString strSQL = ""; bool isPublicGroup = SqlQueryExecutor::instance().isPublicAttributeGroup(m_connection, m_modelAttributeGroup.groupID); if(isPublicGroup) - strSQL = QString("SELECT attribute_id FROM basic.model_attribute_public WHERE attribute_group_id = %1 ORDER BY id ASC LIMIT %2 OFFSET %3") + /*strSQL = QString("SELECT attribute_id FROM basic.model_attribute_public WHERE attribute_group_id = %1 ORDER BY id ASC LIMIT %2 OFFSET %3") .arg(m_modelAttributeGroup.groupID) .arg(m_paginationInfo.entriesPerPage) + .arg((m_paginationInfo.currentPage - 1) * m_paginationInfo.entriesPerPage);*/ + strSQL = QString("SELECT attribute_id FROM basic.model_attribute_public AS map " + "INNER JOIN basic.attribute AS a ON map.attribute_id = a.id " + "WHERE attribute_group_id = %1 " + "AND a.attribute LIKE '%%2%' " + "ORDER BY map.id ASC LIMIT %3 OFFSET %4") + .arg(m_modelAttributeGroup.groupID) + .arg(m_filterChars_attributeType) + .arg(m_paginationInfo.entriesPerPage) .arg((m_paginationInfo.currentPage - 1) * m_paginationInfo.entriesPerPage); //利用短路机制,当attribute_group_id!=-1时,括号整体为false,需要进行内部条件判断,=-1时,整体为true,忽略整体,也就忽略了attribute_group_id的条件判断 - else strSQL = QString("SELECT attribute_id FROM basic.model_attribute WHERE model_type_id = %1 AND (attribute_group_id = %2 OR %2 = -1) ORDER BY id ASC LIMIT %3 OFFSET %4") + else + /*strSQL = QString("SELECT attribute_id FROM basic.model_attribute WHERE model_type_id = %1 AND (attribute_group_id = %2 OR %2 = -1) ORDER BY id ASC LIMIT %3 OFFSET %4") .arg(m_modelAttributeGroup.modelID) .arg(m_modelAttributeGroup.groupID) .arg(m_paginationInfo.entriesPerPage) - .arg((m_paginationInfo.currentPage - 1) * m_paginationInfo.entriesPerPage); + .arg((m_paginationInfo.currentPage - 1) * m_paginationInfo.entriesPerPage);*/ + strSQL = QString("SELECT attribute_id FROM basic.model_attribute AS map " + "INNER JOIN basic.attribute AS a ON map.attribute_id = a.id " + "WHERE model_type_id = %1 " + "AND (attribute_group_id = %2 OR %2 = -1) " + "AND a.attribute LIKE '%%3%' " + "ORDER BY map.id ASC LIMIT %4 OFFSET %5") + .arg(m_modelAttributeGroup.modelID) + .arg(m_modelAttributeGroup.groupID) + .arg(m_filterChars_attributeType) + .arg(m_paginationInfo.entriesPerPage) + .arg((m_paginationInfo.currentPage - 1) * m_paginationInfo.entriesPerPage); try { QSqlQuery query = SqlQueryExecutor::instance().executeSQL(m_connection, strSQL); @@ -404,8 +425,8 @@ void AttributeTableModel::loadPageData() attribute.id = query.value(0).toInt(); if(SqlQueryExecutor::instance().getAttributeInfo(m_connection, columns.join(", "), attribute)) { - if(!m_filterChars_attributeType.isEmpty() && !attribute.type.contains(m_filterChars_attributeType)) - continue; + // if(!m_filterChars_attributeType.isEmpty() && !attribute.type.contains(m_filterChars_attributeType)) + // continue; RowData data; data.values.append(attribute.type); @@ -504,7 +525,7 @@ void AttributeTableModel::updateTotalCount() if(m_modelAttributeGroup.modelID == -1) m_paginationInfo.totalEntries = SqlQueryExecutor::instance().getAllAttributeCount(m_connection, m_filterChars_attributeType); else - m_paginationInfo.totalEntries = SqlQueryExecutor::instance().getAttributeCount(m_connection, m_modelAttributeGroup.modelID, m_modelAttributeGroup.groupID); + m_paginationInfo.totalEntries = SqlQueryExecutor::instance().getAttributeCount(m_connection, m_modelAttributeGroup.modelID, m_modelAttributeGroup.groupID, m_filterChars_attributeType); m_paginationInfo.totalPages = totalPages(); }