Newer
Older
WorkCardReader / dao / PersonDao.cpp
tanyue on 18 Jun 2022 7 KB 20220618 界面调整
#include "PersonDao.h"


PersonDao::PersonDao(QObject *parent) : BaseDao(parent)
{

}

QVector<QVariantMap> PersonDao::findAllRecord()
{
    // 新建查询
    QSqlQuery query(ConnectionManager::getInstance()->getConnection());

    // 查询语句
    QString sql = "SELECT ID, VALID, NAME, PERSON_CODE, CARD_SERIAL, DEPT_NAME, PHOTO, TS FROM WCR_PERSON WHERE VALID = 1";

    // 执行查询
    query.exec(sql);

    // 返回结果
    QVector<QVariantMap> result;

    // 遍历查询结果
    while (query.next()) {
        QVariantMap item;
        item.insert("id", query.value("ID").toString());
        item.insert("valid", query.value("VALID").toUInt());
        item.insert("name", query.value("NAME").toString());
        item.insert("personCode", query.value("PERSON_CODE").toString());
        item.insert("cardSerial", query.value("CARD_SERIAL").toString());
        item.insert("deptName", query.value("DEPT_NAME").toString());
        item.insert("photo", query.value("PHOTO").toString());
        item.insert("ts", query.value("TS").toString());
        result.append(item);
    }

    LOG(DEBUG) << QString("查询PERSON表的所有记录[%1]").arg(result.size()).toStdString();

    return result;
}

QVariantMap PersonDao::findRecordById(QString id)
{
    // 新建查询
    QSqlQuery query(ConnectionManager::getInstance()->getConnection());

    // 查询语句
    QString sql = QString("SELECT ID, VALID, NAME, PERSON_CODE, CARD_SERIAL, DEPT_NAME, PHOTO, TS FROM WCR_PERSON WHERE VALID = 1 AND ID = '%1'").arg(id);

    // 执行查询
    query.exec(sql);

    // 返回结果
    QVariantMap result;

    if (query.next())
    {
        result.insert("id", query.value("ID").toString());
        result.insert("valid", query.value("VALID").toUInt());
        result.insert("name", query.value("NAME").toString());
        result.insert("personCode", query.value("PERSON_CODE").toString());
        result.insert("cardSerial", query.value("CARD_SERIAL").toString());
        result.insert("deptName", query.value("DEPT_NAME").toString());
        result.insert("photo", query.value("PHOTO").toString());
        result.insert("ts", query.value("TS").toString());
    }

    LOG(DEBUG) << QString("根据id查询PERSON表的记录[id=%1][%2]").arg(id).arg(sql).toStdString();

    return result;
}

QVariantMap findRecordByIdWithoutValid(QString id)
{
    // 新建查询
    QSqlQuery query(ConnectionManager::getInstance()->getConnection());

    // 查询语句
    QString sql = QString("SELECT ID, VALID, NAME, PERSON_CODE, CARD_SERIAL, DEPT_NAME, PHOTO, TS FROM WCR_PERSON WHERE ID = '%1'").arg(id);

    // 执行查询
    query.exec(sql);

    // 返回结果
    QVariantMap result;

    if (query.next())
    {
        result.insert("id", query.value("ID").toString());
        result.insert("valid", query.value("VALID").toUInt());
        result.insert("name", query.value("NAME").toString());
        result.insert("personCode", query.value("PERSON_CODE").toString());
        result.insert("cardSerial", query.value("CARD_SERIAL").toString());
        result.insert("deptName", query.value("DEPT_NAME").toString());
        result.insert("photo", query.value("PHOTO").toString());
        result.insert("ts", query.value("TS").toString());
    }

    LOG(DEBUG) << QString("根据id查询PERSON表的记录[含已删除][id=%1][%2]").arg(id).arg(sql).toStdString();

    return result;
}


QVector<QVariantMap> PersonDao::findRecordsByProperty(QString properName, QVariant properValue)
{
    // 新建查询
    QSqlQuery query(ConnectionManager::getInstance()->getConnection());

    // 查询语句
    QString sql = "SELECT ID, VALID, NAME, PERSON_CODE, CARD_SERIAL, DEPT_NAME, PHOTO, TS FROM WCR_PERSON WHERE VALID = 1 AND %1 = '%2'";
    sql = sql.arg(properName).arg(properValue.toString());

    // 执行查询
    query.exec(sql);

    // 返回结果
    QVector<QVariantMap> result;

    // 遍历查询结果
    while (query.next()) {
        QVariantMap item;
        item.insert("id", query.value("ID").toString());
        item.insert("valid", query.value("VALID").toUInt());
        item.insert("name", query.value("NAME").toString());
        item.insert("personCode", query.value("PERSON_CODE").toString());
        item.insert("cardSerial", query.value("CARD_SERIAL").toString());
        item.insert("deptName", query.value("DEPT_NAME").toString());
        item.insert("photo", query.value("PHOTO").toString());
        item.insert("ts", query.value("TS").toString());
        result.append(item);
    }

    LOG(DEBUG) << QString("根据属性值查询PERSON表的记录[%1][%2]").arg(result.size()).arg(sql).toStdString();
    return result;
}

QString PersonDao::save(QVariantMap object)
{
    // 新建查询
    QSqlQuery query(ConnectionManager::getInstance()->getConnection());

    qulonglong id = ConnectionManager::getInstance()->generateId();

    // INSERT语句
    QString sql = QString("INSERT INTO WCR_PERSON "
                  "(ID, VALID, NAME, PERSON_CODE, CARD_SERIAL, DEPT_NAME, PHOTO, TS) "
                  "VALUES ('%1', 1, '%2', '%3', '%4', '%5', '%6', '%7')")
            .arg(id)
            .arg(object.value("name").toString())
            .arg(object.value("personCode").toString())
            .arg(object.value("cardSerial").toString())
            .arg(object.value("deptName").toString())
            .arg(object.value("photo").toString())
            .arg(object.value("ts").toString());

    // 开启事务
    ConnectionManager::getInstance()->getConnection().transaction();

    // 执行插入
    bool success = query.exec(sql);

    // 结束事务
    ConnectionManager::getInstance()->getConnection().commit();

    // 返回结果
    if (success == true)
    {
        LOG(DEBUG) << QString("保存PERSON记录成功[ID = %1][%2]").arg(id).arg(sql).toStdString();
        return QString("%1").arg(id);
    }
    else
    {
        return "-1";
    }
}

bool PersonDao::edit(QVariantMap newObject, QString id)
{
    // 新建查询
    QSqlQuery query(ConnectionManager::getInstance()->getConnection());

    // UPDATE语句
    QString sql = QString("UPDATE PERSON SET TS = '%1'").arg(newObject.value("ts").toString());
    if (newObject.contains("name"))
    {
        sql.append(QString(", NAME = '%1'").arg(newObject.value("name").toString()));
    }
    if (newObject.contains("personCode"))
    {
        sql.append(QString(", PERSON_CODE = '%1'").arg(newObject.value("personCode").toString()));
    }
    if (newObject.contains("cardSerial"))
    {
        sql.append(QString(", CARD_SERIAL = '%1'").arg(newObject.value("cardSerial").toString()));
    }
    if (newObject.contains("deptName"))
    {
        sql.append(QString(", DEPT_NAME = '%1'").arg(newObject.value("deptName").toString()));
    }
    if (newObject.contains("photo"))
    {
        sql.append(QString(", PHOTO = '%1'").arg(newObject.value("photo").toString()));
    }

    sql.append(QString(" WHERE ID = '%1'").arg(id));

    // 开启事务
    ConnectionManager::getInstance()->getConnection().transaction();

    // 执行更新
    bool success = query.exec(sql);

    // 结束事务
    ConnectionManager::getInstance()->getConnection().commit();

    LOG(DEBUG) << QString("编辑人员[ID=%1][%2]").arg(id).arg(sql).toStdString();

    // 返回结果
    return success;
}

bool PersonDao::dele(QString id)
{
    // 新建查询
    QSqlQuery query(ConnectionManager::getInstance()->getConnection());

    qint64 ts = QDateTime::currentDateTime().toMSecsSinceEpoch();

    // UPDATE语句
    QString sql = QString("UPDATE WCR_PERSON SET TS = '%1', VALID = '%1' WHERE ID = '%2'")
            .arg(ts).arg(id);

    // 开启事务
    ConnectionManager::getInstance()->getConnection().transaction();

    // 执行更新
    bool success = query.exec(sql);

    // 结束事务
    ConnectionManager::getInstance()->getConnection().commit();

    LOG(DEBUG) << QString("删除人员PERSON[ID=%1][%2]").arg(id).arg(sql).toStdString();

    // 返回结果
    return success;
}