修改属性信息获取逻辑

This commit is contained in:
duanshengchao 2025-05-21 11:31:40 +08:00
parent 2dd33f2280
commit 66a506c29b
1 changed files with 27 additions and 6 deletions

View File

@ -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();
}