Newer
Older
AutomaticVerification / softwareDirectory / AutoVerScheme / basecommonapi.cpp
#include "basecommonapi.h"
#include <QDateTime>
#include <QByteArray>
#include <QProcess>
#include <QString>
#include <QDebug>



BaseCommonApi::BaseCommonApi()
{

}
const QString BaseCommonApi::temporary_user_id="1634107227953819649";
const QString BaseCommonApi::measure_person_id="1695282436182188034";
static SyncRunStatus syncstate=SyncRunStatus::Stopped;


//sys_user表的id转换为measure_person_id 检定人id(meter_staff表id)
StaffInfo BaseCommonApi::ConvertStaffInfo(QString userId)
{
    userId=temporary_user_id;
    StaffInfo result;
    QSqlQuery query;
    query.prepare("SELECT brsi.* from biz_resource_staff_info brsi "
                  " JOIN sys_user ON sys_user.ACCOUNT = brsi.account "
                  " WHERE sys_user.id = :userId ");

     query.bindValue(":userId", userId);
     if (query.exec()) {
         while (query.next()) {
             StaffInfo info;
             info.id = query.value("id").toString();
             info.account = query.value("account").toString();
             info.staff_no = query.value("staff_no").toString();
             info.staff_name = query.value("staff_name").toString();
             info.picture_file = query.value("picture_file").toString();
             info.id_card = query.value("id_card").toString();
             info.birthday = query.value("birthday").toString();
             info.native_place = query.value("native_place").toString();
             info.education = query.value("education").toString();
             info.record_date = query.value("record_date").toString();
             info.officer_no = query.value("officer_no").toString();
             info.gender = query.value("gender").toString();
             info.graduation_date = query.value("graduation_date").toString();
             info.nation = query.value("nation").toString();
             info.degree = query.value("degree").toString();
             info.dept_id = query.value("dept_id").toString();
             info.dept_name = query.value("dept_name").toString();
             info.station = query.value("station").toString();
             info.major = query.value("major").toString();
             info.certificate_number = query.value("certificate_number").toString();
             info.engage_date = query.value("engage_date").toString();
             info.working_age = query.value("working_age").toString();
             info.title_initial_date = query.value("title_initial_date").toString();
             info.remark = query.value("remark").toString();
             info.create_time = query.value("create_time").toDateTime();
             info.update_time = query.value("update_time").toDateTime();
             result=info;

         }
//          qDebug() << "sql代码: " << query.lastQuery();
     }else {
         qDebug() << "Query execution failed: " << query.lastError().text();
     }

         return result;
}

//登录接口

QString privateKey = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAK7mTyBxMUnLlS0x+a0qJHd/8RxR73eTN+15GPr6wzl8dG86Jvzb66pAyOBpFmIxyvceIcgVjm8Dpz5F9vlHYI6K2g6HHID1TZ4teSfPEtRAgCpcC8pA7wqd6sDVCNx2zvGEkHZc+FYWVjhFW0xPbCvaUx3b1AMTgX+TPIOE0GnHAgMBAAECgYEAhJApfzRsIDu++L99N4POmgiOLmHn+CDMbiCwD2LLX6H1+mwAKv1hVOy/lF/ySEDnToA3KJk2GOyS8X9EH1K7WmxRcJ1am1JLwy+spHkExQzvAO9mrEhtavpwAZLiBoCUB4uQazETHncM0lNXtUYY8Ydd/zKodCMVPN4tql84f0kCQQDrPEgk6vdAc8vW1JL3ldhRkbl7DKuvDhhoixGEbXrsXXiKN6iB0A3lNTptMxcd1TjSJz8CF8piGRpVyLGoZOYLAkEAvlaXoVXndT+hbsStjORp2RGxZWMPyyyJ4Kw2TnMaUuODXA0PtnYcSA5lI6SpVAvTthSX7VDi5C9xLyc+QRvMtQJAVjzhTfd98XkCL536yx16El1UHFJG1oRaWmkxYNUqDWEvAazp770weukKpGHohZ1XmWOd68yA+3msd+p9hviGhQJAUIntgUwLM3aoRWmdkhd4nmw5JxCCt1LySIo2NH3J7rbsd3/jXS6fCvJkY2+iYrjabZpLKxTl3O4iM3SkiAJOXQJBAN++IAMMs7HVTQnsIN+L+tQwcWM5jn0sSRLGFvSkPjlT2W++qJNTW/oswmcQTPFn7Vf3GaE5JF6XAxrZMOZBG00=";
QString publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCu5k8gcTFJy5UtMfmtKiR3f/EcUe93kzfteRj6+sM5fHRvOib82+uqQMjgaRZiMcr3HiHIFY5vA6c+Rfb5R2COitoOhxyA9U2eLXknzxLUQIAqXAvKQO8KnerA1Qjcds7xhJB2XPhWFlY4RVtMT2wr2lMd29QDE4F/kzyDhNBpxwIDAQAB";

// 加密
QString BaseCommonApi::encrypt(const QString &str, const QString &publicKey) {
    QByteArray pubKey = QByteArray::fromBase64(publicKey.toUtf8());
    QString outStr;
    QString command = "openssl rsautl -encrypt -pubin -inkey <(echo \"" + pubKey + "\")";

    QProcess process;
    process.setProcessChannelMode(QProcess::MergedChannels);
    process.start(command);
    process.write(str.toUtf8());
    process.closeWriteChannel();
    process.waitForFinished(-1);
    outStr = QString::fromUtf8(process.readAll());
    return outStr.trimmed().toUtf8().toBase64();
}

// 解密
QString decrypt(const QString &str, const QString &privateKey) {
    QByteArray inputByte = QByteArray::fromBase64(str.toUtf8());
    QByteArray priKey = QByteArray::fromBase64(privateKey.toUtf8());
    QString outStr;
    QString command = "openssl rsautl -decrypt -inkey <(echo \"" + priKey + "\")";

    QProcess process;
    process.setProcessChannelMode(QProcess::MergedChannels);
    process.start(command);
    process.write(inputByte);
    process.closeWriteChannel();
    process.waitForFinished(-1);
    outStr = QString::fromUtf8(process.readAll());
    return outStr.trimmed();
}





//获取部门任务数据
QList<Dept> BaseCommonApi::getAllData() {
    QList<Dept> result;
    QSqlQuery query;
    QString deptId=ConvertStaffInfo(temporary_user_id).dept_id;
    query.prepare("SELECT   blei.id AS id, blei.sample_id as equipmentId,eei.equipment_name AS sampleName, eei.model AS sampleModel,eei.help_instruction AS helpInstruction, "
              " eei.manufacture_no AS manufactureNo, eei.manufacturer,bo.customer_name,sd.SIMPLE_NAME,bo.require_over_time, bo.is_urgent,blei.measure_status "
              "FROM biz_business_lab_executive_info blei  "
              "JOIN eqpt_equipment_info eei ON eei.id = blei.sample_id "
              "LEFT JOIN sys_dept sd ON blei.measure_dept_id = sd.ID "
              " JOIN biz_business_order_info bo ON bo.id = blei.order_id   "
           //   " WHERE blei.measure_dept_id = :deptId "
              " ORDER BY blei.update_time DESC");
    // 将参数绑定到占位符
    // query.bindValue(":deptId", deptId);

if (query.exec()) {
    while (query.next()) {
        Dept dept;
        dept.id = query.value("id").toString();
        dept.sample_name = query.value("sampleName").toString();
        dept.sample_id = query.value("equipmentId").toString();
        dept.sample_model = query.value("sampleModel").toString();
        dept.help_instruction = query.value("helpInstruction").toString();
        dept.manufacture_no = query.value("manufactureNo").toString();
        dept.manufacturer = query.value("manufacturer").toString();
        dept.customer_name = query.value("customer_name").toString();
        dept.FULL_NAME = query.value("SIMPLE_NAME").toString();
        dept.require_over_time = query.value("require_over_time").toDateTime();
        dept.is_urgent = query.value("is_urgent").toString();
        dept.measure_status=query.value("measure_status").toString();

        result.append(dept);
//        qDebug() <<"---+"<<dept.sample_id;
    }

    }else {
    qDebug() << "Query execution failed: " << query.lastError().text();
}

    return result;
}
//获取我的任务  参数登录用户的id 和 任务状态
//blei.measure_status 3 为检定中的状态
//blei.measure_status 4 为检定完
//blei.measure_status 10 已退回
QList<MyTask> BaseCommonApi::getMyTasks(QString userId,QString status){
    userId=temporary_user_id;
    QString _measure_person_id=measure_person_id;
    QList<MyTask> result;
    QSqlQuery query;
    query.prepare("SELECT blei.id AS id, eei.equipment_name AS sampleName, eei.model AS sampleModel, eei.help_instruction AS helpInstruction, "
                  "eei.manufacture_no AS manufactureNo, eei.manufacturer,bo.customer_name,sd.SIMPLE_NAME AS measureDeptName,bo.require_over_time ,"
                  " bo.is_urgent,blei.measure_status "
              "FROM biz_business_lab_executive_info blei "
              "JOIN eqpt_equipment_info eei ON eei.id = blei.sample_id "
              "JOIN biz_business_order_info bo ON bo.id = blei.order_id "
              "LEFT JOIN sys_dept sd ON blei.measure_dept_id = sd.ID "
             " WHERE blei.measure_person_id = :person_id "
              " AND blei.measure_status =3 or blei.measure_status = 4 "
              " ORDER BY blei.update_time DESC");

    // 将参数绑定到占位符
     query.bindValue(":person_id", _measure_person_id);
     //query.bindValue(":status", status);
if (query.exec()) {
    while (query.next()) {

          MyTask task;
          task.id = query.value("id").toString();
          task.sample_name = query.value("sampleName").toString();
          task.sample_model = query.value("sampleModel").toString();
          task.help_instruction = query.value("helpInstruction").toString();
          task.manufacture_no = query.value("manufactureNo").toString();
          task.manufacturer = query.value("manufacturer").toString();
          task.customer_name = query.value("customer_name").toString();
          task.FULL_NAME = query.value("measureDeptName").toString();
          task.require_over_time = query.value("require_over_time").toDateTime();
          task.is_urgent = query.value("is_urgent").toString();
          task.measure_status=query.value("measure_status").toString();
          result.append(task);
    }
}
else {
        qDebug() << "Query execution failed: " << query.lastError().text();
    }
    return result;
}
//查看最新结果保存数据
SaveDeviceMeasureInfo BaseCommonApi::getNewResultData()
{
    SaveDeviceMeasureInfo result;
    QSqlQuery query;
    query.prepare("select * from biz_business_device_measure_info as bz ORDER BY  bz.create_time DESC LIMIT 1");
     if (query.exec()) {
            while (query.next()) {

                result.id = query.value("id").toString();
                result.data_no = query.value("data_no").toString();

            }
        } else {
            qDebug() << "Query execution failed: " << query.lastError().text();
        }
     return result;
}
//查看当前最新的任务单
QList<CreateTaskList> BaseCommonApi::getCreateTaskListNew()
{
    QList<CreateTaskList> result;
    QSqlQuery query;
    query.prepare("select * from biz_business_order_info as bz ORDER BY  bz.create_time DESC LIMIT 1");
     if (query.exec()) {
            while (query.next()) {
                CreateTaskList task;
                task.id = query.value("id").toString();
                task.order_no = query.value("order_no").toString();
                task.customer_name = query.value("customer_name").toString();
                task.DEPT_FULL_NAME = query.value("FULL_NAME").toString();
                task.require_over_time = query.value("require_over_time").toDateTime();
                task.deliverer = query.value("deliverer").toString();
                task.is_urgent = query.value("is_urgent").toString();
                result.append(task);
            }
        } else {
            qDebug() << "Query execution failed: " << query.lastError().text();
        }
     return result;
}
//获取创建任务首页数据
QList<CreateTaskList> BaseCommonApi::getCreateTaskList(QString userId)
{
    userId=temporary_user_id;
    QList<CreateTaskList> result;
    QSqlQuery query;
    query.prepare("SELECT bi.id,bi.order_no,bi.customer_name,dept.FULL_NAME,bi.require_over_time,bi.deliverer,bi.is_urgent "
                  " FROM biz_business_order_info bi LEFT JOIN sys_dept dept ON bi.customer_id = dept.ID "
                  " WHERE bi.create_user_id = :userId ORDER BY bi.create_time DESC");
    // 将参数绑定到占位符
     query.bindValue(":userId", userId);
     if (query.exec()) {
            while (query.next()) {
                CreateTaskList task;
                task.id = query.value("id").toString();
                task.order_no = query.value("order_no").toString();
                task.customer_name = query.value("customer_name").toString();
                task.DEPT_FULL_NAME = query.value("FULL_NAME").toString();
                task.require_over_time = query.value("require_over_time").toDateTime();
                task.deliverer = query.value("deliverer").toString();
                task.is_urgent = query.value("is_urgent").toString();
                result.append(task);
            }
        } else {
            qDebug() << "Query execution failed: " << query.lastError().text();
        }
     return result;
}
//获取创建任务首页数据
QList<CreateTaskList>getCreateTaskList(QString userId)
{
    QList<CreateTaskList> result;
    QSqlQuery query;
    query.prepare("SELECT bi.id,bi.order_no,bi.customer_name,dept.FULL_NAME,bi.require_over_time,bi.deliverer,bi.is_urgent "
                  " FROM biz_business_order_info bi LEFT JOIN sys_dept dept ON bi.customer_id = dept.ID "
                  " WHERE bi.create_user_id =  :userId  ");
    // 将参数绑定到占位符
     query.bindValue(":userId", userId);
     if (query.exec()) {
            while (query.next()) {
                CreateTaskList task;
                task.id = query.value("id").toString();
                task.order_no = query.value("order_no").toString();
                task.customer_name = query.value("customer_name").toString();
                task.DEPT_FULL_NAME = query.value("FULL_NAME").toString();
                task.require_over_time = query.value("require_over_time").toDateTime();
                task.deliverer = query.value("deliverer").toString();
                task.is_urgent = query.value("is_urgent").toString();
                result.append(task);
            }
        } else {
            qDebug() << "Query execution failed: " << query.lastError().text();
        }

        return result;
}


//创建任务单-查看/编辑 顶部数据  传参该条数据的id
QList<CatTask>BaseCommonApi::getCatTask(QString id)
{
    QList<CatTask> result;
    QSqlQuery query;
    query.prepare("SELECT bi.id, bi.order_no ,bi.customer_name ,dept.FULL_NAME ,bi.require_over_time ,"
                  " bi.deliverer ,bi.deliverer_tel ,bi.undertaker_name ,bi.undertake_time ,  bi.is_urgent ,"
                  " bi.receive_illustrate  FROM biz_business_order_info bi LEFT JOIN sys_dept dept ON bi.customer_id = dept.ID"
                  " WHERE  bi.id = :id  ");
    // 将参数绑定到占位符
     query.bindValue(":id", id);
     if (query.exec()) {
            while (query.next()) {
                CatTask task;
                task.id=query.value("id").toString();
                task.order_no = query.value("order_no").toString();
                task.customer_name = query.value("customer_name").toString();
                task.DEPT_FULL_NAME = query.value("FULL_NAME").toString();
                task.require_over_time = query.value("require_over_time").toDateTime();
                task.deliverer = query.value("deliverer").toString();
                task.deliverer_tel = query.value("deliverer_tel").toString();
                task.undertaker_name = query.value("undertaker_name").toString();
                task.undertake_time = query.value("undertake_time").toDateTime();
                task.is_urgent = query.value("is_urgent").toString();
                task.receive_illustrate = query.value("receive_illustrate").toString();
                result.append(task);
            }
        } else {
            qDebug() << "Query execution failed: " << query.lastError().text();
        }

        return result;
}



//获取创建任务 -任务单列表
QList<CatTaskList>BaseCommonApi::getCatTaskList(QString orderId)
{
    QList<CatTaskList> result;
    QSqlQuery query;
     query.prepare("SELECT br.id , br.sample_name ,br.sample_model ,ei.manufacture_no,ei.manufacturer ,br.appendix_descn ,"
                "br.special_require ,br.measure_complete_time ,bbdmi.conclusion ,ei.limit_instruction FROM biz_business_order_sample_relation br"
                " Left JOIN eqpt_equipment_info ei ON br.sample_no = ei.equipment_no "
                "Left JOIN biz_business_device_measure_info bbdmi ON  br.order_id = bbdmi.order_id "
                "WHERE br.order_id = :order_id");
     // 将参数绑定到占位符
      query.bindValue(":order_id", orderId);
      if (query.exec()) {
             while (query.next()) {
                 CatTaskList task;
                 task.id = query.value("id").toString();
                 task.sample_name = query.value("sample_name").toString();
                 task.sample_model = query.value("sample_model").toString();
                 task.manufacture_no = query.value("manufacture_no").toString();
                 task.manufacturer = query.value("manufacturer").toString();
                 task.appendix_descn = query.value("appendix_descn").toString();
                 task.special_require = query.value("special_require").toString();
                 task.measure_complete_time = query.value("measure_complete_time").toDateTime();
                 task.conclusion = query.value("conclusion").toString();
                 task.limit_instruction = query.value("limit_instruction").toString();
                 result.append(task);
             }
         } else {
             qDebug() << "Query execution failed: " << query.lastError().text();
         }

         return result;
}

//先查询指定下拉框的字段
 QList<SelectSpecifyFields> BaseCommonApi::getSelectSpecifyFields()
 {
     QList<SelectSpecifyFields> result;

      QSqlQuery query;
        bool IsSucc= query.exec("SELECT bi.id,bi.order_no  ,bi.customer_name ,dept.FULL_NAME ,"
                  "bi.require_over_time , bi.deliverer ,bi.is_urgent  "
                  "FROM biz_business_order_info bi,sys_dept dept WHERE bi.customer_id = dept.ID");
       if (IsSucc) {
              while (query.next()) {
                  SelectSpecifyFields customerInfo;
                  customerInfo.id = query.value("id").toString();
                  customerInfo.customer_no = query.value("customer_no").toString();
                  customerInfo.customer_name = query.value("customer_name").toString();
                  customerInfo.FULL_NAME = query.value("FULL_NAME").toString();
                  result.append(customerInfo);
              }
          } else {
              qDebug() << "Query execution failed: " << query.lastError().text();
          }

          return result;
 }
//新增任务单
bool BaseCommonApi::InsertTaskBasic(InsertTask insertTask)
 {
    //1640229293790650370
     insertTask.create_user_id=temporary_user_id;
     QSqlQuery query;
     query.prepare("INSERT INTO biz_business_order_info (id,"
                   "order_no, customer_name, require_over_time, deliverer, deliverer_tel,"
                   "undertaker_name, undertake_time, is_urgent, receive_illustrate, customer_id,create_user_id"
             "   ) VALUES (:id, "
             "     :order_no, :customer_name, :require_over_time, "
              "    :deliverer, :deliverer_tel, :undertaker_name, :undertake_time, "
              "    :is_urgent, "
              "    :receive_illustrate,"
              "   :customer_id,"
              "   :create_user_id"
             " );");

        query.bindValue(":id", insertTask.id);
        query.bindValue(":order_no", insertTask.order_no);
        query.bindValue(":customer_name", insertTask.customer_name);
        query.bindValue(":require_over_time", insertTask.require_over_time);
        query.bindValue(":deliverer", insertTask.deliverer);
        query.bindValue(":deliverer_tel", insertTask.deliverer_tel);
        query.bindValue(":undertaker_name", insertTask.undertaker_name);
        query.bindValue(":undertake_time", insertTask.undertake_time);
        query.bindValue(":is_urgent", insertTask.is_urgent);
        query.bindValue(":receive_illustrate", insertTask.receive_illustrate);
        query.bindValue(":customer_id", insertTask.customer_id);
        query.bindValue(":Create_user_id", insertTask.create_user_id);
        bool isSuccess = query.exec();
        if (!isSuccess) {
            qDebug() << "InsertTaskBasic query failed: " << query.lastError().text();
        }

        return isSuccess;
 }
//新增任务单样品表
bool BaseCommonApi::InsertOrderSampleRelation(OrderSampleRelation orderSample)
{
      orderSample.create_user_id=temporary_user_id;
      QSqlQuery query;
       query.prepare("INSERT INTO biz_business_order_sample_relation (id,order_id,sample_id,"
                     "sample_name, sample_model,measure_complete_time,create_time,update_time)"
                     "VALUES (:id,:order_id,:sample_id,"
                     ":sample_name, :sample_model,:measure_complete_time,:create_time,:update_time);");

       QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
       query.bindValue(":id", orderSample.id);
       query.bindValue(":order_id", orderSample.order_id);
       query.bindValue(":sample_id", orderSample.sample_id);
       query.bindValue(":sample_name", orderSample.sample_name);
       query.bindValue(":sample_model", orderSample.sample_model);
       query.bindValue(":measure_complete_time", orderSample.measure_complete_time);
        query.bindValue(":create_time", currentDateTime);
        query.bindValue(":update_time", currentDateTime);

       bool isSuccess = query.exec();

       if (isSuccess) {
           QString ssql = "INSERT INTO biz_business_order_sample_relation (id,order_id,sample_id,"
                                "sample_name, sample_model,measure_complete_time,create_time,update_time)"
                                "VALUES (:1,:2,:3,"
                                ":4, :5,:6,:7,:8);";
           saveLogToSql(ssql,&orderSample);
       }else {
qDebug() << " query failed: " << query.lastError().text();
}

       return isSuccess;
}
//新增任务单 信息记录表
bool BaseCommonApi::InsertTaskInfoRecord(biz_business_lab_executive_info eneity)
{
    eneity.create_user_id=temporary_user_id;
    eneity.measure_person_id=measure_person_id;
    QSqlQuery query;
     query.prepare("INSERT biz_business_lab_executive_info(id,order_id,sample_id,measure_dept_id,"
                  "measure_person_id,create_user,measure_status,is_auto"
                   ")VALUES"
                   "(:id,:order_id,:sample_id,:measure_dept_id,:measure_person_id,"
                   ":create_user_id,:measure_status,:is_auto,:create_time,:update_time)");
     QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
     // Bind values to the parameters
     query.bindValue(":id", eneity.id);
     query.bindValue(":order_id", eneity.order_id);
     query.bindValue(":sample_id", eneity.sample_id);
     query.bindValue(":measure_dept_id", eneity.measure_dept_id);
     query.bindValue(":measure_person_id", eneity.measure_person_id);
     query.bindValue(":create_user_id", eneity.create_user_id);
     query.bindValue(":measure_status","3");
     query.bindValue(":is_auto","0");
     query.bindValue(":create_time",currentDateTime);
     query.bindValue(":update_time",currentDateTime);
     bool isSuccess = query.exec();

     if (isSuccess) {
         QString ssql = "INSERT biz_business_lab_executive_info(id,order_id,sample_id,measure_dept_id,"
                        "measure_person_id,create_user,measure_status,is_auto,create_time,update_time"
                         ")VALUES"
                         "(:1,:2,:3,:4,:5,"
                         ":6,:7,:8,:9,:10)";
         saveLogToSql(ssql,&eneity);
     }else {
qDebug() << " query failed: " << query.lastError().text();
}

     return isSuccess;
}
//更新 任务单
bool BaseCommonApi::UpdateTask(InsertTask updateTask)
{
    QSqlQuery query;
       query.prepare("UPDATE biz_business_order_info"
                     " SET order_no = :order_no,customer_name = :customer_name,"
                     " require_over_time = :require_over_time,deliverer = :deliverer,"
                      "   deliverer_tel = :deliverer_tel,undertaker_name = :undertaker_name,"
                        " undertake_time = :undertake_time, is_urgent = :is_urgent,"
                       "  receive_illustrate = :receive_illustrate, customer_id = :customer_id "
                    " WHERE id = :id;");
       query.bindValue(":order_no", updateTask.order_no);
         query.bindValue(":customer_name", updateTask.customer_name);
         query.bindValue(":require_over_time", updateTask.require_over_time);
         query.bindValue(":deliverer", updateTask.deliverer);
         query.bindValue(":deliverer_tel", updateTask.deliverer_tel);
         query.bindValue(":undertaker_name", updateTask.undertaker_name);
         query.bindValue(":undertake_time", updateTask.undertake_time);
         query.bindValue(":is_urgent", updateTask.is_urgent);
         query.bindValue(":receive_illustrate", updateTask.receive_illustrate);
         query.bindValue(":customer_id", updateTask.customer_id);
         query.bindValue(":id", updateTask.id);

         bool isSuccess = query.exec();
         if (isSuccess) {
             QString ssql = "UPDATE biz_business_order_info"
                                  " SET order_no = :1,customer_name = :2,"
                                  " require_over_time = :3,deliverer = :4,"
                                   "   deliverer_tel = :5,undertaker_name = :6,"
                                     " undertake_time = :7, is_urgent = :8,"
                                    "  receive_illustrate = :9, customer_id = :10 "
                                 " WHERE id = :11;";
             saveLogToSql(ssql,&updateTask);
         }else {
qDebug() << "query failed: " << query.lastError().text();
}

         return isSuccess;
}
//单独查询任务单表
//更新 任务单
InsertTask BaseCommonApi::SelectTaskSingle(QString order_id)
{
    InsertTask result;
    QSqlQuery query;
     query.prepare("SELECT * From biz_business_order_info WHERE id=:order_id");
     // 将参数绑定到占位符
      query.bindValue(":order_id", order_id);
      if (query.exec()) {
             while (query.next()) {
                 result.id = query.value("id").toString();
                 result.customer_name = query.value("customer_name").toString();
                 result.require_over_time = query.value("require_over_time").toString();
                 result.deliverer = query.value("deliverer").toString();
                 result.deliverer_tel = query.value("deliverer_tel").toString();
                 result.undertaker_name = query.value("undertaker_name").toString();
                 result.undertake_time = query.value("undertake_time").toString();
                 bool is_urgent=false;
                 if(query.value("is_urgent").toString()=="是"){is_urgent=true;}else{is_urgent=false;};
                 result.is_urgent = is_urgent;
                 result.receive_illustrate = query.value("receive_illustrate").toString();
                 result.customer_id = query.value("customer_id").toString();

             }
         } else {
             qDebug() << "Query execution failed: " << query.lastError().text();
         }

         return result;
}
//删除任务单
bool BaseCommonApi::DeleteTask(QString id)
{
    QSqlQuery query;


    bool allSuccessful = true;
    // 定义一个删除函数,用于复用删除逻辑
       auto deleteRecord = [&](const QString& tableName) {
           query.prepare("DELETE FROM " + tableName + " WHERE order_id = :id");
           query.bindValue(":id", id);
           if (query.exec()) {
               zdDataSync sync;
               QString ssql_result = "DELETE FROM  "+ tableName + "WHERE order_id =" + id;
               sync.ssql = ssql_result;
               sync.id = QString::number(BaseCommonApi().generateId());
               sync.sync_type = "0";
               bool isSuccess = BaseCommonApi::InsertzdDataSync(sync);
               if(!isSuccess){
                    qDebug()<<"save log fail";
               }
           }else {
               qDebug() << "删除" << tableName << "表中的记录失败: " << query.lastError().text();
               allSuccessful = false;
}
       };
       deleteRecord("biz_business_order_info");
       deleteRecord("biz_business_order_sample_relation");
       deleteRecord("biz_business_lab_executive_info");
       return allSuccessful;

}
//删除任务单信息记录表同一任务ID的设备
bool BaseCommonApi::DeleteTaskInfoRecordDevice(QString order_id)
{
    QSqlQuery query;

      //删除任务单样品表数据
      query.prepare("DELETE FROM biz_business_lab_executive_info WHERE order_id = :id");
      query.bindValue(":id", order_id);

      if (query.exec()) {
          zdDataSync sync;
          QString ssql_result = "DELETE FROM biz_business_lab_executive_info WHERE order_id =" + order_id;
          sync.ssql = ssql_result;
          sync.id = QString::number(BaseCommonApi().generateId());
          sync.sync_type = "0";
          bool isSuccess = BaseCommonApi::InsertzdDataSync(sync);
          if(!isSuccess){
               qDebug()<<"save log fail";
          }
      }else {
          qDebug() << "删除失败 " << query.lastError().text();
          return false;
}

      return true;
}
//删除任务详情表同一任务ID的设备
bool BaseCommonApi::DeleteTaskSameDevice(QString order_id)
{
    QSqlQuery query;

      //删除任务单样品表数据
      query.prepare("DELETE FROM biz_business_order_sample_relation WHERE order_id = :id");
      query.bindValue(":id", order_id);

      if (query.exec()) {
          zdDataSync sync;
          QString ssql_result = "DELETE FROM biz_business_order_sample_relation WHERE order_id =" + order_id;
          sync.ssql = ssql_result;
          sync.id = QString::number(BaseCommonApi().generateId());
          sync.sync_type = "0";
          bool isSuccess = BaseCommonApi::InsertzdDataSync(sync);
          if(!isSuccess){
               qDebug()<<"save log fail";
          }
      }else {
          qDebug() << "删除失败 " << query.lastError().text();
          return false;
}

      return true;
}
//删除任务单内设备
bool BaseCommonApi::DeleteTaskDevice(QString id)
{
    QSqlQuery query;

      //删除任务单样品表数据
      query.prepare("DELETE FROM biz_business_order_sample_relation WHERE id = :id");
      query.bindValue(":id", id);

      if (query.exec()) {
          zdDataSync sync;
          QString ssql_result = "DELETE FROM biz_business_order_sample_relation WHERE id = " + id;
          sync.ssql = ssql_result;
          sync.id = QString::number(BaseCommonApi().generateId());
          sync.sync_type = "0";
          bool isSuccess = BaseCommonApi::InsertzdDataSync(sync);
          if(!isSuccess){
               qDebug()<<"save log fail";
          }
      }else {
          qDebug() << "删除失败 " << query.lastError().text();
          return false;
}

      return true;
}
//获取标准设备管理 首页
QList<BizDevice>BaseCommonApi::getBizDeviceManage()
{
    QList<BizDevice> result;
    QSqlQuery query;
       bool isSuccess = query.exec("SELECT bei.id ,bei.equipment_name ,bei.model ,bei.manufacture_no ,bei.manufacturer  FROM biz_equipment_info bei");
     if (isSuccess) {
             while (query.next()) {
                 BizDevice device;
                 device.id = query.value("id").toString();
                 device.equipment_name = query.value("equipment_name").toString();
                 device.model = query.value("model").toString();
                 device.manufacture_no = query.value("manufacture_no").toString();
                 device.manufacturer = query.value("manufacturer").toString();
                 result.append(device);
             }
         } else {
             qDebug() << "Query execution failed: " << query.lastError().text();
         }

         return result;
}





//获取标准设备管理-基本信息
QList<CatDeviceInfor>BaseCommonApi::getCatDeviceInfor(QString id)
{
    QList<CatDeviceInfor> result;
    QSqlQuery query;
     query.prepare("SELECT bei.equipment_name ,bei.model ,bei.manufacture_no ,bei.measure_valid_date ,"
                "bei.product_country , bei.manufacturer , bei.produce_date, bei.purchase_date ,bei.unit_price , bei.usage_status , bei.quality_status , "
                "bei.dept_name , bei.director_name , bei.supplier_name , bei.location , bei.type , bei.standard_type , bei.category , bei.level , "
                "bei.measure_cycle , bei.unpack_record_name , bei.remark  FROM biz_equipment_info bei WHERE bei.id = :id");
     // 将参数绑定到占位符
      query.bindValue(":id", id);
      if (query.exec()) {
              while (query.next()) {
                  CatDeviceInfor device;
                  device.equipment_name = query.value("equipment_name").toString();
                  device.model = query.value("model").toString();
                  device.manufacture_no = query.value("manufacture_no").toString();
                  device.measure_valid_date = query.value("measure_valid_date").toString();
                  device.product_country = query.value("product_country").toString();
                  device.manufacturer = query.value("manufacturer").toString();
                  device.produce_date = query.value("produce_date").toString();
                  device.purchase_date = query.value("purchase_date").toString();
                  device.unit_price = query.value("unit_price").toString();
                  device.usage_status = query.value("usage_status").toString();
                  device.quality_status = query.value("quality_status").toString();
                  device.dept_name = query.value("dept_name").toString();
                  device.director_name = query.value("director_name").toString();
                  device.supplier_name = query.value("supplier_name").toString();
                  device.location = query.value("location").toString();
                  device.type = query.value("type").toString();
                  device.standard_type = query.value("standard_type").toString();
                  device.category = query.value("category").toString();
                  device.level = query.value("level").toString();
                  device.measure_cycle = query.value("measure_cycle").toString();
                  device.unpack_record_name = query.value("unpack_record_name").toString();
                  device.remark = query.value("remark").toString();

                  result.append(device);
              }
          } else {
              qDebug() << "Query execution failed: " << query.lastError().text();
          }

          return result;
}


   //核查直流稳压电源检定装置 待修改  禁用 2024年3月20日13:55:12 查询的不对
QList<CheckDCPower>BaseCommonApi::getCheckDCPower(QString equipment_id,QStringList *headList)
{

//    equipment_id="1693435753272557570";
    QList<CheckDCPower> result;
    QSqlQuery query;
     query.prepare("SELECT besciddp.id ,besciddp.params,besciddp.unit,resolution,besciddp.urel,besciddp.check_type,datum_point,cycle_number "
                  " ,datum_point,resistance_value,resistance_value_unit,remark FROM biz_equipment_standard_check_item_data_dc_power besciddp WHERE equipment_id = :equipment_id ");
     // 将参数绑定到占位符  1693435753272557570
      query.bindValue(":equipment_id", equipment_id);
      if (query.exec()) {
             while (query.next()) {
                 CheckDCPower checkDCPower;
                 checkDCPower.id = query.value("id").toString();
                 checkDCPower.params = query.value("params").toString();
                 checkDCPower.check_point = query.value("check_point").toString();
                 checkDCPower.unit = query.value("unit").toString();
                 checkDCPower.resolution = query.value("resolution").toString();
                 checkDCPower.urel = query.value("urel").toString();
                 checkDCPower.check_type = query.value("check_type").toString();
                 checkDCPower.datum_point = query.value("datum_point").toString();
                 checkDCPower.cycle_number = query.value("cycle_number").toString();
                 checkDCPower.resistance_value = query.value("resistance_value").toString();
                 checkDCPower.resistance_value_unit = query.value("resistance_value_unit").toString();
                 checkDCPower.remark = query.value("remark").toString();

                 result.append(checkDCPower);
             }
         } else {
             qDebug() << "Query execution failed: " << query.lastError().text();
         }

      *headList <<"序号"<<"核查项目"<<"核查点"<<"单位"<<"分辨力"<<"Urel"<<"核查类型"<<"是否为基准点(1/0)"<<"循环次数"
               <<"电阻值/频率"<<"电阻值单位/频率单位"<<"核查项备注";


         return result;
}
    //根据id获取装置名称  2024年4月23日17:53:40  主系统数据库已变
//QString BaseCommonApi::getApparatus(QString id,QString name)
//{
//    QString result;
//    QSqlQuery query;
//    query.prepare("SELECT besi.standard_name FROM biz_equipment_standard_info besi WHERE besi.id = ( "
//                   "SELECT bei.meter_standard_id FROM biz_equipment_info bei WHERE bei.id = :id )");
//        // 将参数绑定到占位符
//         query.bindValue(":id", id);
//         if (query.exec()) {
//                while (query.next()) {
//                     result = query.value("standard_name").toString();
//                }
//         }   else {
//             result = "Not Found";
//         }
//         return  result;
//}

//  被检设备管理 首页
QList<TestedDevice> BaseCommonApi::getTestedDevice()
{
QList<TestedDevice> result;
QSqlQuery query;
bool isSuccess = query.exec("SELECT DISTINCT  eei.id ,eei.equipment_name ,eei.model ,eei.help_instruction ,eei.manufacture_no ,eei.manufacturer ,bboi.customer_name ,sys_dept.FULL_NAME ,eei.meter_identify ,eei.check_cycle ,eei.certificate_valid   from eqpt_equipment_info eei "
                            " LEFT JOIN sys_dept ON sys_dept.ID = eei.dept_id "
                            " LEFT JOIN biz_business_order_info bboi ON bboi.customer_id = eei.company_id");
 if (isSuccess) {
         while (query.next()) {
             TestedDevice testedDevice;
             testedDevice.id = query.value("id").toString();
             testedDevice.equipment_name = query.value("equipment_name").toString();
             testedDevice.model = query.value("model").toString();
             testedDevice.help_instruction = query.value("help_instruction").toString();
             testedDevice.manufacture_no = query.value("manufacture_no").toString();
             testedDevice.manufacturer = query.value("manufacturer").toString();
             testedDevice.FULL_NAME = query.value("FULL_NAME").toString();
             testedDevice.customer_name = query.value("customer_name").toString();
             testedDevice.meter_identify = query.value("meter_identify").toString();
             testedDevice.check_cycle = query.value("check_cycle").toString();
             testedDevice.certificate_valid = query.value("certificate_valid").toString();

             result.append(testedDevice);
         }
     } else {
         qDebug() << "Query execution failed: " << query.lastError().text();
     }

     return result;
}


// 被检设备管理查看设备信息
QList<TestedCatDevice> BaseCommonApi::getTestedCatDevice(QString id)
{
QList<TestedCatDevice> result;
QSqlQuery query;
 query.prepare("SELECT eei.equipment_name ,eei.model ,eei.help_instruction ,eei.manufacture_no ,eei.product_country ,eei.manufacturer ,eei.product_date ,eei.purchase_date ,eei.unit_price ,eei.usage_status ,eei.quality_condition ,sys_dept.FULL_NAME ,"
            "eei.category , eei.check_cycle ,eei.level , eei.remark  from eqpt_equipment_info eei LEFT JOIN sys_dept ON sys_dept.ID = eei.dept_id WHERE eei.id = :id ");
 // 将参数绑定到占位符
  query.bindValue(":id", id);
  if (query.exec()) {
        while (query.next()) {
            TestedCatDevice testedCatDevice;
            testedCatDevice.equipment_name = query.value("equipment_name").toString();
            testedCatDevice.model = query.value("model").toString();
            testedCatDevice.help_instruction = query.value("help_instruction").toString();
            testedCatDevice.manufacture_no = query.value("manufacture_no").toString();
            testedCatDevice.product_country = query.value("product_country").toString();
            testedCatDevice.manufacturer = query.value("manufacturer").toString();
            testedCatDevice.product_date = query.value("product_date").toString();
            testedCatDevice.purchase_date = query.value("purchase_date").toString();
            testedCatDevice.unit_price = query.value("unit_price").toString();
            testedCatDevice.usage_status = query.value("usage_status").toString();
            testedCatDevice.quality_condition = query.value("quality_condition").toString();
            testedCatDevice.FULL_NAME = query.value("FULL_NAME").toString();
            testedCatDevice.category = query.value("category").toString();
            testedCatDevice.check_cycle = query.value("check_cycle").toString();
            testedCatDevice.level = query.value("level").toString();
            testedCatDevice.remark = query.value("remark").toString();

            result.append(testedCatDevice);
        }
    } else {
        qDebug() << "Query execution failed: " << query.lastError().text();
    }

    return result;
}
//核查 判断哪个装置表
JudgeCalibrationTable BaseCommonApi::getJudgeVerifyTable(QString deviceId)
{
    JudgeCalibrationTable result;
    QSqlQuery query;
    query.prepare("SELECT besi.standard_name,bescic.belong_standard_equipment FROM biz_equipment_standard_info besi "
                 "  JOIN biz_equipment_standard_check_item_category bescic ON bescic.belong_standard_equipment_name = besi.standard_name "
                  "  WHERE besi.id = ( SELECT bei.meter_standard_id FROM biz_equipment_info bei WHERE bei.id = :deviceId )");
    // 将参数绑定到占位符  '1692796512381222914'
     query.bindValue(":deviceId", deviceId);
     if (query.exec()) {
         while (query.next()) {
             JudgeCalibrationTable calibration;
             calibration.belong_standard_equipment = query.value("belong_standard_equipment").toString();
   //          QString equipmentValue = query.value("belong_standard_equipment").toString();

             result = calibration;
         }
     } else {
         qDebug() << "Query execution failed: " << query.lastError().text();
     }


     return result;
}

//判断 检定 哪个装置表 传参 设备id
QList<JudgeCalibrationTable> BaseCommonApi::getJudgeCalibrationTable(QString id)
{
//    id="1720260188257480706";
QList<JudgeCalibrationTable> result;
QSqlQuery query;
 query.prepare("SELECT id,belong_standard_equipment  FROM biz_business_device_measure_item_info bbdmii WHERE bbdmii.device_model_id =(SELECT eei.model_id  from eqpt_equipment_info eei WHERE eei.id =  :id )");
// query.prepare("SELECT id,belong_standard_equipment  FROM biz_business_device_measure_item_info bbdmii "
//               "WHERE bbdmii.device_model_id = 1714161758107967489");
// 将参数绑定到占位符
  query.bindValue(":id", id);
  if (query.exec()) {
      while (query.next()) {
          JudgeCalibrationTable calibration;
          calibration.id = query.value("id").toString();
          calibration.belong_standard_equipment = query.value("belong_standard_equipment").toString();
//          QString equipmentValue = query.value("belong_standard_equipment").toString();

          result.append(calibration);
      }
  } else {
      qDebug() << "Query execution failed: " << query.lastError().text();
  }


  return result;
}

//标准装置字典类型
/**
 * 多功能校准源标准装置 = 1
 * 直流稳压电源检定装置 = 2
 * 多功能电气安全校准器标准装置 = 3
 * 0.02级活塞式压力计标准装置 = 4
 * 二等铂电阻温度计标准装置 = 5
 * 安全阀校验装置 = 6
 * 精密露点仪标准装置 = 7
 * E2等级砝码标准装置 = 8
 * 频谱分析仪标准装置 = 9
 * 信号发生器标准装置 = 10
 * 微波衰减标准装置 = 11
 * 频率短期稳定度标准装置 =12
 * 示波器标准装置 = 13
 * 铯原子频率标准装置 =14
 * 小功率标准装置 = 15
 * 低频信号发生器标准装置 = 16
 * S参数标准装置 = 17
 * 失真度标准装置 = 18
 */

//根据被检设备ID获取当前设备的 检定项目及检定点
QMap<QString, QList<QStringList>> BaseCommonApi::Search_CalibrationTableClass(QString DeiverId,QMap<QString, QStringList> *HeadList)
{

     QMap<QString, QList<QStringList>> DataList;
     DataList.clear();
     QList<JudgeCalibrationTable> CliTable=BaseCommonApi::getJudgeCalibrationTable(DeiverId);
     if(CliTable.count()==0)return DataList;
     QList<DeviceMeasureEquipmentCatory> deviceCatory = BaseCommonApi::getDeviceMeasureEquipmentCatory(DeiverId);
     QString deviceCatoryName = deviceCatory[0].item_category_name;
     switch (CliTable[0].belong_standard_equipment.toInt())
     {
        case 1:
         //多功能校准源标准装置
         DataList=BaseCommonApi::getVerMultiCalClass(deviceCatoryName,CliTable[0].id,HeadList);
         break;
        case 2:
         //直流稳压电源检定装置
        DataList=BaseCommonApi::getDeviceMeasureItemDataDcPower(deviceCatoryName,CliTable[0].id,HeadList);
        break;
        case 4:
         //0.02级活塞式压力计标准装置
        DataList=BaseCommonApi::getDeviceMeasureCalibratorPistonGauge(deviceCatoryName,CliTable[0].id,HeadList);
        break;
        case 5:
         //二等铂电阻温度计标准装置
         DataList=BaseCommonApi::getDeviceMeasureItemDataResistanceThermometer(deviceCatoryName,CliTable[0].id,HeadList);
         break;
        case 9:
        //频谱分析仪装置
        DataList=BaseCommonApi::getDeviceMeasureItemDataSpectrumAnalyzer(deviceCatoryName,CliTable[0].id,HeadList);
        break;
         case 10:
         //信号装置
         DataList=BaseCommonApi::getDeviceMeasureItemDataSignalGenerator(deviceCatoryName,CliTable[0].id,HeadList);
         break;
        case 13:
        //示波器标准装置
         DataList=BaseCommonApi::getDeviceOscilloscopeCalibration(deviceCatoryName,CliTable[0].id,HeadList);
         break;

     }

     return  DataList;
};
//查询测试页面中 生成结果处理的表头及数据
QMap<QString, QList<QStringList>> BaseCommonApi::Search_GenerateTableClass(QString DeiverId,QMap<QString, QStringList> *HeadList)
{
    QMap<QString, QList<QStringList>> DataList;
    DataList.clear();
    QList<JudgeCalibrationTable> CliTable=BaseCommonApi::getJudgeCalibrationTable(DeiverId);
    if(CliTable.count()==0)return DataList;
    QList<DeviceMeasureEquipmentCatory> deviceCatory = BaseCommonApi::getDeviceMeasureEquipmentCatory(DeiverId);
    QString deviceCatoryName = deviceCatory[0].item_category_name;
    switch (CliTable[0].belong_standard_equipment.toInt())
    {
       case 4:
       DataList=BaseCommonApi::getDeviceMeasureCalibratorPistonGaugeGenerate(deviceCatoryName,CliTable[0].id,HeadList);
       break;
       case 13:
           //示波器标准装置 = 13
           //DataList=BaseCommonApi::getDeviceOscilloscopeCalibration(deviceCatoryName,CliTable[0].id,HeadList);
        break;

    }

    return  DataList;
}

//根据被检设备ID获取当前设备的 检定项目及检定点  测试函数
//QList<QStringList> BaseCommonApi::Search_CalibrationTable(QString DeiverId,QStringList *HeadList)
//{

//     QList<QStringList> DataList;
//     DataList.clear();
//     QList<JudgeCalibrationTable> CliTable=BaseCommonApi::getJudgeCalibrationTable(DeiverId);
//     if(CliTable.count()==0)return DataList;
//     switch (CliTable[0].belong_standard_equipment.toInt())
//     {
//        case 1:
//       //CliTable[0].id
//         //1717086652508487681
//         DataList=BaseCommonApi::getVerMultiCal(CliTable[0].id,HeadList);
////     case 4:
////         DataList=BaseCommonApi::getDeviceMeasureCalibratorPistonGauge(CliTable[0].id,HeadList);
//     }

//     return  DataList;
//};
//核查设备对应的装置表  核查项及核查点   传参设备id
QList<QStringList> BaseCommonApi::Search_VerifyTable(QString DeiverId,QStringList *HeadList )
{
         QList<QStringList> DataList;
         JudgeCalibrationTable CliTable=BaseCommonApi::getJudgeVerifyTable(DeiverId);
         if(CliTable.belong_standard_equipment.isEmpty() || CliTable.belong_standard_equipment.isNull()) return DataList;
         switch(CliTable.belong_standard_equipment.toInt())
         {
            case 1: //多功能校准源
               DataList =  BaseCommonApi::getVerificationItemsMultiList(DeiverId,HeadList);
             break;
         }
              return  DataList;
};
//判断检定数据管理 结果信息表
QList<QStringList> BaseCommonApi::Search_CalibrationDataTable(QString DeiverId,QString dataId,QStringList *HeadList)
{
    QList<QStringList> DataList;
    QList<JudgeCalibrationTable> CliTable=BaseCommonApi::getJudgeCalibrationTable(DeiverId);
    if(CliTable.count()==0)return DataList;
     switch (CliTable[0].belong_standard_equipment.toInt())
    {
       case 1: //多功能校准源
          DataList =  BaseCommonApi::getVerificationMultiCalResultData(dataId,HeadList);
        break;
    }
         return  DataList;
};
//判断核查数据管理 结果信息表
QList<QStringList> BaseCommonApi::Search_VerifyDataTable(QString DeiverId,QString dataId,QStringList *HeadList)
{
    QList<QStringList> DataList;
    JudgeCalibrationTable CliTable=BaseCommonApi::getJudgeVerifyTable(DeiverId);
    if(CliTable.belong_standard_equipment.isEmpty() || CliTable.belong_standard_equipment.isNull()) return DataList;
    switch(CliTable.belong_standard_equipment.toInt())
    {
       case 1: //多功能校准源

          DataList =  BaseCommonApi::getCheckDataManageResultManageMult(dataId,HeadList);
        break;
    }
         return  DataList;
};
//被检设备管理-检定项目及检定点-多功能校准源
QList<QStringList> BaseCommonApi::getVerMultiCal(QString itemId,QStringList *headList)
{
QMap<QString, QStringList> dailyTaskCounts;
QMap<QString, QList<QStringList>> dailyTaskCounts1;

QList<QStringList> resultData;
QStringList result;
resultData.clear();

QSqlQuery query;
 query.prepare("SELECT bbdmidc.*,bbdmic.category_name FROM biz_business_device_measure_item_data_calibrator bbdmidc "
               " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidc.item_id "
               " JOIN biz_business_device_measure_item_category bbdmic ON bbdmic.id = bbdmii.item_category_id "
               " WHERE item_id = :itemId");
 // 将参数绑定到占位符
  query.bindValue(":itemId", itemId);
  if (query.exec()) {
      while (query.next()) {
        result.clear();
          result.append(query.value("id").toString());
          result.append(query.value("item_id").toString());  //检定项目ID
          result.append(query.value("params").toString());   //检查项目
          result.append(query.value("capacity").toString());
          result.append(query.value("unit").toString());
          result.append(query.value("frequency").toString());
          result.append(query.value("frequency_unit").toString());
          result.append(query.value("range_range").toString());
          result.append(query.value("standard_value").toString());
          result.append(query.value("resolution").toString());
          result.append(query.value("maximum_error").toString());
          result.append(query.value("error_param_a").toString());
          result.append(query.value("error_param_b").toString());
          result.append(query.value("line_mode").toString());
          result.append(query.value("coil_enlarge").toString());
          result.append(query.value("indicating_value").toString());
          result.append(query.value("accuracy_a").toString());
          result.append(query.value("full_scale_value").toString());
          result.append(query.value("full_scale_value_unit").toString());
          result.append(query.value("measure_indication_value").toString());
          result.append(query.value("accuracy_level").toString());
          result.append(query.value("create_time").toString());
          result.append(query.value("update_time").toString());
          result.append(query.value("category_name").toString());
        resultData.append(result);
      }
  } else {
      qDebug() << "Query execution failed: " << query.lastError().text();
  }

    *headList <<"序号"<<"检定项id"<<"参数"<<"量"<<"单位"<<"频率"<<"频率单位"<<"量程"<<"标准值"<<"分辨力"<<"最大允许误差(公式)"<<"误差参数a"<<"误差参数b"
            <<"两线/四线模式"<<"线圈放大"<<"示值"<<"准确度a"<<"指针式仪表满量程值"<<"指针式仪表满量程值单位"<<"被检表示值"<<"准确度等级"<<"创建时间"<<"更新时间"<<"检定项分类";
  return resultData;
}
//被检设备管理-检定项目及检定点-多功能校准源
QMap<QString, QList<QStringList>> BaseCommonApi::getVerMultiCalClass(QString itemCatoryName,QString itemId,QMap<QString, QStringList> *headList)
{
QMap<QString, QList<QStringList>> DataMapList;
QList<QStringList> resultData;
QStringList result;
resultData.clear();

QSqlQuery query;
 query.prepare("SELECT * FROM biz_business_device_measure_item_data_calibrator bbdmidc WHERE item_id = :itemId ");
 // 将参数绑定到占位符
  query.bindValue(":itemId", itemId);
  if (query.exec()) {
      while (query.next()) {
        result.clear();
          result.append(query.value("id").toString());
          result.append(query.value("item_id").toString());  //检定项目ID
          result.append(query.value("params").toString());   //检查项目
          result.append(query.value("capacity").toString());//量
          result.append(query.value("unit").toString());//单位
          result.append(query.value("frequency").toString());//频率
          result.append(query.value("frequency_unit").toString());//频率单位
          result.append(query.value("range_range").toString());//量程
          result.append(query.value("standard_value").toString());//标准值
          result.append(query.value("resolution").toString());//分辨力
          result.append(query.value("maximum_error").toString());//最大允许误差(公式)
          result.append(query.value("error_param_a").toString());//误差参数a
          result.append(query.value("error_param_b").toString());//误差参数b
          result.append(query.value("line_mode").toString());//两线/四线模式
          result.append(query.value("coil_enlarge").toString());//线圈放大
          result.append(query.value("indicating_value").toString());//示值
          result.append(query.value("accuracy_a").toString());//准确度a
          result.append(query.value("full_scale_value").toString());//指针式仪表满量程值
          result.append(query.value("full_scale_value_unit").toString());//指针式仪表满量程值单位
          result.append(query.value("measure_indication_value").toString());//被检表示值
          result.append(query.value("accuracy_level").toString());//准确度等级
          result.append(query.value("create_time").toString());
          result.append(query.value("update_time").toString());
        resultData.append(result);
      }
  } else {
      qDebug() << "Query execution failed: " << query.lastError().text();
  }
  //进行检定项目列头转换
  DataMapList= GetDataReturnItemList( itemCatoryName,resultData,DataMapList,headList);
  return DataMapList;
}

QMap<QString, QList<QStringList>> BaseCommonApi::GetDataReturnItemList(QString itemCatoryName,QList<QStringList> ResultData,QMap<QString, QList<QStringList>> DataMapList,QMap<QString, QStringList> *HeadMapList)
{
    QList<QStringList> DCVList;
         QList<QStringList> ACVList;
         QList<QStringList> DCIList;
         QList<QStringList> ACIList;
         QList<QStringList> RList;
       if(itemCatoryName.contains("数字多用表")){
       for(const QStringList &row : ResultData)
       {
           QStringList head;
           QStringList Data;
           QString VerificationItem=NULL;
           if (!row.isEmpty()) { // 确保行不为空
               if(row[2]=="DCV")
               {
                   VerificationItem = "DCV";
                   //添加列头
                     head << "序号" << "检定项目" << "量" << "单位" << "量程"<< "标准值" << "示值"
                          << "绝对误差" << "最大允许误差" << "分辨力"<<"a"<<"b";
                     HeadMapList->insert(VerificationItem,head);
                     //添加数据
                     Data.append(row[0]);  //ID
                     Data.append(row[2]);  //检定项目
                     Data.append(row[3]);  //量
                     Data.append(row[4]);  //单位
                     Data.append(row[7]);  //量程
                     Data.append(row[8]);  //标准值
                     Data.append(row[15]);  //示值
                     Data.append("");   //绝对误差 软件界面计算
                     //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程
                     try {
                         //保证数据库内数据没问题
                         Data.append(QString::number((row[11].toDouble()*row[8].toDouble())
                                                  + (row[12].toDouble()*row[7].toDouble())));
                     } catch(const std::exception &e) {
                         Data.append("0");
                     }
                     Data.append(row[9]);  //分辨力
                     Data.append(row[11]);//a
                     Data.append(row[12]);//b
                     DCVList.append(Data);
                 }
                 else if(row[2]=="ACV" )
                 {
                     VerificationItem = "ACV";
                     //添加列头

                     head << "序号" << "检定项目" << "量" << "单位" <<"频率"  <<"频率单位"<< "量程"
                          << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"<<"a"<<"b";
                      HeadMapList->insert(VerificationItem,head);
                     //添加数据
                     Data.append(row[0]);  //ID
                     Data.append(row[2]);  //检定项目
                     Data.append(row[3]);  //量
                     Data.append(row[4]);  //单位
                     Data.append(row[5]);  //频率
                     Data.append(row[6]);  //频率单位
                     Data.append(row[7]);  //量程
                     Data.append(row[8]);  //标准值
                     Data.append(row[15]);  //示值
                     Data.append("");   //绝对误差 软件界面计算
                     //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程
                     try {
                         //保证数据库内数据没问题
                         Data.append(QString::number((row[11].toDouble()*row[8].toDouble())
                                                  + (row[12].toDouble()*row[7].toDouble())));
                     } catch(const std::exception &e) {
                         Data.append("0");
                     }
                     Data.append(row[9]);  //分辨力
                     Data.append(row[11]);//a
                     Data.append(row[12]);//b
                     ACVList.append(Data);
                 } else if(row[2]=="DCI" )
                 {
                     VerificationItem = "DCI";
                     //添加列头

                     head << "序号" << "检定项目" << "量" << "单位" << "量程"
                          << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"<<"a"<<"b";
                      HeadMapList->insert(VerificationItem,head);

                     //添加数据
                     Data.append(row[0]);  //ID
                     Data.append(row[2]);  //检定项目
                     Data.append(row[3]);  //量
                     Data.append(row[4]);  //单位
                     //Data.append(row[5]);  //频率
                     Data.append(row[7]);  //量程
                     Data.append(row[8]);  //标准值
                     Data.append(row[15]);  //示值
                     Data.append("");   //绝对误差 软件界面计算
                     //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程
                     try {
                         //保证数据库内数据没问题
                         Data.append(QString::number((row[11].toDouble()*row[8].toDouble())
                                                  + (row[12].toDouble()*row[7].toDouble())));
                     } catch(const std::exception &e) {
                         Data.append("0");
                     }
                     Data.append(row[9]);  //分辨力
                     Data.append(row[11]);//a
                     Data.append(row[12]);//b
                     DCIList.append(Data);

                 } else if(row[2]=="ACI" )
                 {
                     VerificationItem = "ACI";
                     //添加列头

                     head   << "序号" << "检定项目" << "量" << "单位" <<"频率" <<"频率单位"  << "量程"
                          << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"<<"a"<<"b";
                      HeadMapList->insert(VerificationItem,head);

                     //添加数据

                     Data.append(row[0]);  //ID
                     Data.append(row[2]);  //检定项目
                     Data.append(row[3]);  //量
                     Data.append(row[4]);  //单位
                     Data.append(row[5]);  //频率
                     Data.append(row[6]);  //频率单位
                     Data.append(row[7]);  //量程
                     Data.append(row[8]);  //标准值
                     Data.append(row[15]);  //示值
                     Data.append("");   //绝对误差 软件界面计算
                     //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程
                     try {
                         //保证数据库内数据没问题
                         Data.append(QString::number((row[11].toDouble()*row[8].toDouble())
                                                  + (row[12].toDouble()*row[7].toDouble())));
                     } catch(const std::exception &e) {
                         Data.append("0");
                     }
                     Data.append(row[9]);  //分辨力
                     Data.append(row[11]);//a
                     Data.append(row[12]);//b
                     ACIList.append(Data);
                 } else if(row[2]=="R")
                 {
                     VerificationItem = "R";
                     //添加列头

                     head << "序号" << "检定项目" << "量" << "单位" <<"两线/四线"   << "量程"
                          << "标准值" << "示值" << "绝对误差" << "最大允许误差" << "分辨力"<<"a"<<"b";
                      HeadMapList->insert(VerificationItem,head);
                     //添加数据

                     Data.append(row[0]);  //ID
                     Data.append(row[2]);  //检定项目
                     Data.append(row[3]);  //量
                     Data.append(row[4]);  //单位
                     Data.append(row[13]);  //两线/四线
                     Data.append(row[7]);  //量程
                     Data.append(row[8]);  //标准值
                     Data.append(row[15]);  //示值
                     Data.append("");   //绝对误差 软件界面计算
                     //最大允许误差 根据公式计算 目前 先都按 a*标准值 + b*量程
                     try {
                         //保证数据库内数据没问题
                         Data.append(QString::number((row[11].toDouble()*row[8].toDouble())
                                                  + (row[12].toDouble()*row[7].toDouble())));
                     } catch(const std::exception &e) {
                         Data.append("0");
                     }
                     Data.append(row[9]);  //分辨力
                     Data.append(row[11]);//a
                     Data.append(row[12]);//b
                     RList.append(Data);
                 }

                }
         }

         if(DCVList.count()!=0){
             DataMapList.insert("DCV",DCVList);
         };
         if(ACVList.count()!=0){
             DataMapList.insert("ACV",ACVList);
         };
         if(DCIList.count()!=0){
             DataMapList.insert("DCI",DCIList);
         };
         if(ACIList.count()!=0){
             DataMapList.insert("ACI",ACIList);
         };
         if(RList.count()!=0){
             DataMapList.insert("R",RList);
         };
          }
         return  DataMapList;
}
//检定数据管理 首页
QList<VerificationData> BaseCommonApi::getVerificationData()
{
QList<VerificationData> result;
QSqlQuery query;
  /*bool isSuccess = query.exec("SELECT bbdmi.*, eei.id,bboi.customer_name, eemi.help_instruction, bbdmii.item_category_id, bbdmii.item_category_name, "
                              " bbdmii.belong_standard_equipment, bboi.customer_address,_user.NAME,eei.meter_identify,dept.FULL_NAME"
                              " FROM biz_business_device_measure_info bbdmi "
                              " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmi.item_id "
                              " LEFT JOIN sys_user _user ON bbdmi.create_user_id = _user.id "
                              " LEFT JOIN eqpt_equipment_info eei ON bbdmi.sample_id = eei.id "
                              " LEFT JOIN sys_dept dept ON eei.dept_id = dept.ID "
                              " JOIN eqpt_equipment_model_info eemi ON eemi.id = bbdmii.device_model_id "
                              " JOIN biz_business_order_sample_relation bbosr ON (bbosr.order_id = bbdmi.order_id AND bbosr.sample_id = "
                              " bbdmi.sample_id) JOIN biz_business_order_info bboi ON bbosr.order_id = bboi.id "
                              " ORDER BY bbdmi.create_time DESC");*/
bool isSuccess = query.exec("SELECT bbdmi.*, eei.id,bboi.customer_name, eemi.help_instruction, bbdmii.item_category_id, bbdmii.item_category_name, "
                           " bbdmii.belong_standard_equipment, bboi.customer_address,_user.NAME,eei.meter_identify,dept.FULL_NAME "
                          " FROM biz_business_device_measure_info bbdmi "
                          "  LEFT JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmi.item_id "
                          "  LEFT JOIN sys_user _user ON bbdmi.create_user_id = _user.id "
                           " LEFT JOIN eqpt_equipment_info eei ON bbdmi.sample_id = eei.id "
                           " LEFT JOIN sys_dept dept ON eei.dept_id = dept.ID "
                           " LEFT JOIN eqpt_equipment_model_info eemi ON eemi.id = bbdmii.device_model_id "
                           " LEFT JOIN biz_business_order_sample_relation bbosr ON (bbosr.order_id = bbdmi.order_id AND bbosr.sample_id = "
                           " bbdmi.sample_id) "
                           " LEFT JOIN biz_business_order_info bboi ON bbosr.order_id = bboi.id "
                            " ORDER BY bbdmi.create_time DESC");
 if (isSuccess) {
        while (query.next()) {
            VerificationData verificationData;
            verificationData.id = query.value("id").toString();
            verificationData.sample_id = query.value("sample_id").toString();
            verificationData.item_id = query.value("item_id").toString();
            verificationData.sample_name = query.value("sample_name").toString();
            verificationData.model = query.value("model").toString();
            verificationData.help_instruction = query.value("help_instruction").toString();
            verificationData.manufacture_no = query.value("manufacture_no").toString();
            verificationData.manufacturer = query.value("manufacturer").toString();
            verificationData.customer_name = query.value("customer_name").toString();
            verificationData.FULL_NAME = query.value("FULL_NAME").toString();
            verificationData.NAME = query.value("NAME").toString();
            verificationData.trace_date = query.value("trace_date").toDate();
            verificationData.measure_valid_date = query.value("measure_valid_date").toDateTime();
            verificationData.meter_identify = query.value("meter_identify").toString();
            verificationData.restriction_instruction = query.value("restriction_instruction").toString();
            result.append(verificationData);
        }
    } else {
        qDebug() << "Query execution failed: " << query.lastError().text();
    }
    return result;
}
//检定数据管理-检定基本信息-标准设备 参数:首页数据的id
QList<VerificationBasicDataDevice> BaseCommonApi::getVerificationBasicDataDevice(QString data_id)
{
QList<VerificationBasicDataDevice> result;
QSqlQuery query;
 query.prepare("SELECT bei.id AS equipmentId, bei.equipment_no, bei.equipment_name, bei.manufacture_no, bei.model, bei.measure_valid_date, "
               "bett.uncertainty "
               " FROM biz_business_device_measure_equipment bbdme "
               " JOIN biz_equipment_info bei ON bei.id = bbdme.equipment_id "
               " Left JOIN biz_equipment_technical_target bett ON bei.equipment_no = bett.equipment_no "
               " WHERE bbdme.data_id = :data_id");
 // 将参数绑定到占位符
  query.bindValue(":data_id", data_id);
  if (query.exec()) {
         while (query.next()) {
             VerificationBasicDataDevice dataDetails;
             dataDetails.equipmentId = query.value("equipmentId").toString();
             dataDetails.equipment_no = query.value("equipment_no").toString();
             dataDetails.equipment_name = query.value("equipment_name").toString();
             dataDetails.model = query.value("model").toString();
             dataDetails.measure_valid_date = query.value("measure_valid_date").toDateTime();
             dataDetails.uncertainty = query.value("uncertainty").toString();
             result.append(dataDetails);
         }
     } else {
         qDebug() << "Query execution failed: " << query.lastError().text();
     }

     return result;
}
//检定数据管理-检定基本信息  参数item_id 首页单条数据中包含
VerificationBasicDataDetails BaseCommonApi::getVerificationBasicDataDetails(QString item_id)
{
    VerificationBasicDataDetails result;
    QSqlQuery query;
     query.prepare("SELECT bbdmi.*, bboi.customer_name, eemi.help_instruction, bbdmii.item_category_name, bboi.order_no,eemtte.based_documents,_user.NAME"
                   " FROM biz_business_device_measure_info bbdmi "
                   " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmi.item_id "
                   " JOIN eqpt_equipment_model_info eemi ON eemi.id = bbdmii.device_model_id "
                   " JOIN biz_business_order_sample_relation bbosr ON (bbosr.order_id = bbdmi.order_id AND bbosr.sample_id = bbdmi.sample_id) "
                   " JOIN biz_business_order_info bboi ON bbosr.order_id = bboi.id "
                   " LEFT JOIN eqpt_equipment_model_technical_target eemtte ON bbdmii.device_model_id = eemtte.model_id "
                   " LEFT JOIN sys_user _user ON bbdmi.create_user_id = _user.id "
                   " WHERE bbdmi.item_id = :item_id "
                   " ORDER BY bbdmi.update_time DESC"
                   " LIMIT 1");
     // 将参数绑定到占位符
      query.bindValue(":item_id", item_id);
      if (query.exec()) {
             while (query.next()) {
                 VerificationBasicDataDetails dataDetails;
                 dataDetails.customer_name = query.value("customer_name").toString();
                 dataDetails.humidity = query.value("humidity").toString();
                 dataDetails.temperature = query.value("temperature").toString();
//                 dataDetails.model = query.value("model").toString();
                 dataDetails.measure_address = query.value("measure_address").toString();
                 dataDetails.measure_valid_date = query.value("measure_valid_date").toDateTime();
                 dataDetails.conclusion = query.value("conclusion").toString();
                 dataDetails.restriction_instruction = query.value("restriction_instruction").toString();
                 dataDetails.based_documents = query.value("based_documents").toString();
                 dataDetails.trace_date = query.value("trace_date").toDate();
                 dataDetails.NAME = query.value("NAME").toString();
                 dataDetails.appearance_function_check=query.value("appearance_function_check").toString();
                 dataDetails.appearance_remark=query.value("appearance_remark").toString();
                 result = dataDetails;
             }
         } else {
             qDebug() << "Query execution failed: " << query.lastError().text();
         }

         return result;
}
//检定数据管理-检定结果信息 SaveDeviceMeasureCalibrator   多功能校准源结果数据表
QList<QStringList> BaseCommonApi::getVerificationMultiCalResultData(QString dataId,QStringList *HeadList)
{
 QList<QStringList> resultData;
 QStringList result;
QSqlQuery query;
 query.prepare("SELECT * FROM biz_business_device_measure_data_calibrator WHERE data_id = :dataId ");
 // 将参数绑定到占位符
  query.bindValue(":dataId", dataId);
  if (query.exec()) {
        while (query.next()) {
            result.clear();
           result.append(query.value("id").toString());
           result.append(query.value("params").toString());
           result.append(query.value("capacity").toString());
           result.append(query.value("unit").toString());
           result.append(query.value("frequency").toString());
           result.append( query.value("range_range").toString());
           result.append(query.value("standard_value").toString());
           result.append(query.value("indicating_value").toString());
           result.append(query.value("resolution").toString());
           result.append(query.value("maximum_error").toString());
          result.append(query.value("error_param_a").toString());
           result.append( query.value("error_param_b").toString());
           result.append(query.value("other_outcome").toString());

           resultData.append(result);
        }
    } else {
        qDebug() << "Query execution failed: " << query.lastError().text();
    }
  *HeadList<<"id"<<"参数"<<"量"<<"单位"<<"频率"
          <<"量程"<<"标准值" <<"示值" <<"分辨力"<<"最大允许误差"<<"误差参数a"
         <<"误差参数b"<<"合格率";

    return resultData;
}

//核查数据管理 首页
QList<CheckData> BaseCommonApi::getCheckData()
{
QList<CheckData> result;
QSqlQuery query;
 bool isSuccess = query.exec("SELECT besci.*, besi.standard_name AS standardEquipmentName, beit.equipment_name AS equipmentName, beit.model AS equipmentModel, "
                             " bescic.category_name AS itemCategoryName, bescic.belong_standard_equipment AS belongStandardEquipment,beit.manufacture_no,"
                             " beit.manufacturer,besci.create_user_name "
                             " FROM biz_equipment_standard_check_info besci "
                             " JOIN biz_equipment_standard_info besi ON besci.standard_equipment_id = besi.id "
                             " JOIN biz_equipment_info beit ON besci.equipment_id = beit.id  "
                             " LEFT JOIN biz_equipment_standard_check_item_category bescic ON bescic.id = besci.item_category_id ORDER BY besci.create_time DESC ");
    if (isSuccess) {
         while (query.next()) {
             CheckData dataManage;
             dataManage.id = query.value("id").toString();
             dataManage.equipmentName = query.value("equipmentName").toString();
             dataManage.equipmentModel = query.value("equipmentModel").toString();
             dataManage.manufacture_no = query.value("manufacture_no").toString();
//             dataManage.meter_standard_name = query.value("meter_standard_name").toString();
             dataManage.equipment_id = query.value("equipment_id").toString();
             dataManage.create_user_name = query.value("create_user_name").toString();
             dataManage.check_date = query.value("check_date").toDate();
             dataManage.dept_name = query.value("dept_name").toString();
             dataManage.manufacturer=query.value("manufacturer").toString();
             result.append(dataManage);
         }
     } else {
         qDebug() << "Query execution failed: " << query.lastError().text();
     }

     return result;
}

//核查数据管理-核查基本信息-核查件  参数为 首页id
QList<CheckDataManageBasicInfo> BaseCommonApi::getCheckDataManageBasicInfoDevice(QString data_id)
{
QList<CheckDataManageBasicInfo> result;
QSqlQuery query;
 query.prepare("SELECT bei.* FROM biz_equipment_standard_check_info_equipment bescie "
               " JOIN biz_equipment_info bei ON bei.id = bescie.check_equipment_id "
               " WHERE bescie.data_id = :data_id ");

 // 将参数绑定到占位符
  query.bindValue(":data_id", data_id);
  if (query.exec()) {
         while (query.next()) {
             CheckDataManageBasicInfo basicInfo;
             basicInfo.equipment_name = query.value("equipment_name").toString();
             basicInfo.model = query.value("model").toString();
             basicInfo.manufacture_no = query.value("manufacture_no").toString();
             basicInfo.manufacturer = query.value("manufacturer").toString();
             result.append(basicInfo);
         }
     } else {
         qDebug() << "Query execution failed: " << query.lastError().text();
     }

     return result;
}

//核查数据管理-核查基本信息-基本信息
CheckDataManageBasicInfo BaseCommonApi::getCheckDataManageBasicInfo(QString equipment_id)
{
    CheckDataManageBasicInfo  result;
    QSqlQuery query;
     query.prepare("SELECT * FROM biz_equipment_standard_check_info WHERE equipment_id = :equipment_id");

     // 将参数绑定到占位符
      query.bindValue(":equipment_id", equipment_id);
      if (query.exec()) {
             while (query.next()) {
                 CheckDataManageBasicInfo basicInfo;
                 basicInfo.temperature = query.value("temperature").toString();
                 basicInfo.humidity = query.value("humidity").toString();
                 basicInfo.check_date = query.value("check_date").toDate();
                 basicInfo.check_address = query.value("check_address").toString();
                 basicInfo.create_user_name = query.value("create_user_name").toString();
                 basicInfo.conclusion = query.value("conclusion").toString();
                 result=basicInfo;
             }
         } else {
             qDebug() << "Query execution failed: " << query.lastError().text();
         }

         return result;
}


//核查数据管理-核查结果信息-核查项多功能校准源数据   参数首页数据的id
QList<QStringList> BaseCommonApi::getCheckDataManageResultManageMult(QString data_id,QStringList *HeadList)
{
QList<QStringList> resultDate;
QStringList result;
QSqlQuery query;
 query.prepare("SELECT * FROM biz_equipment_standard_check_data_calibrator WHERE data_id = :data_id ");

  query.bindValue(":data_id", data_id);
  if (query.exec()) {
         while (query.next()) {
           result.clear();
             result.append(query.value("id").toString());
             result.append(query.value("data_id").toString());
             result.append(query.value("check_type").toString());
             result.append(query.value("test_type").toString());
             result.append(query.value("params").toString());
             result.append(query.value("unit").toString());
             result.append(query.value("frequency").toString());
             result.append(query.value("frequency_unit").toString());
             result.append(query.value("check_point").toString());

             result.append(query.value("test_value_one_date").toString());
             result.append(query.value("test_value_one").toString());

             result.append(query.value("test_value_two_date").toString());
             result.append(query.value("test_value_two").toString());

             result.append( query.value("test_value_three_date").toString());
             result.append(query.value("test_value_three").toString());

             result.append(query.value("test_value_four_date").toString());
             result.append(query.value("test_value_four").toString());

             result.append(query.value("test_value_five_date").toString());
             result.append(query.value("test_value_five").toString());

             result.append( query.value("test_value_six_date").toString());
             result.append( query.value("test_value_six").toString());

             result.append(query.value("average_value").toString());
             result.append( query.value("standard_deviation").toString());
             result.append( query.value("relative_repeatability").toString());
             result.append( query.value("urel").toString());
             result.append(query.value("less_than").toString());
             result.append( query.value("qualified").toString());


             result.append(query.value("create_time").toString());
             result.append(query.value("update_time").toString());

             resultDate.append(result);
         }
     } else {
         qDebug() << "Query execution failed: " << query.lastError().text();
     }
    *HeadList<<"id"<<"核查数据管理基础信息表id"<<"核查类型"<<"核查点类型"<<"核查项目"<<"单位"<<"频率"<<"频率单位"<<"核查点"
            <<"核查读数1日期"<<"核查读数1(示值)"<<"核查读数2日期(稳定性)"<<"核查读数2(示值)"
           <<"核查读数3日期(稳定性)  "<<"核查读数3(示值)"<<"核查读数4日期(稳定性)"<<"核查读数4(示值)"<<"核查读数5日期(稳定性)"
          <<"核查读数5(示值)"<<"核查读数6日期(稳定性)"<<"核查读数6(本次示值)"<<"核查读数平均值(算数平均值)"<<"Sn(x)(标准偏差)"
         <<"Sn(x)/核查读数平均值(相对重复性)"<<"UREL"<<"是否小于相对扩展不确定度Urel(0/1)"<<"稳定性考核是否合格"<<"创建时间"<<"更新时间";
     return resultDate;

}
//技术文件管理
QList<Technique_File> BaseCommonApi::getTechnique_File()
{
    QList<Technique_File> result;
    QSqlQuery query;
     bool isSuccess = query.exec("SELECT brtf.id,brtf.file_distribute_no ,brtf.file_name ,brtf.version_no ,brtf.active_date ,brtf.remark "
                " FROM biz_resource_technique_file brtf");

     if (isSuccess) {
          while (query.next()) {
              Technique_File file;
              file.id=query.value("id").toString();
              file.file_distribute_no = query.value("file_distribute_no").toString();
              file.file_name = query.value("file_name").toString();
              file.version_no = query.value("version_no").toString();
              file.active_date = query.value("active_date").toDateTime();
              file.remark = query.value("remark").toString();

              result.append(file);
          }
      } else {
          qDebug() << "Query execution failed: " << query.lastError().text();
      }

      return result;

}
//检定程序管理首页查询
QList<VerificationProgramInfo> BaseCommonApi::getVerificationProgramInfoMain()
{
    QList<VerificationProgramInfo> result;
    QSqlQuery query;
    bool isSuccess = query.exec("SELECT *  FROM zd_verification_program_info");
    if (isSuccess) {
        while (query.next()) {
            VerificationProgramInfo programInfo;
            programInfo.id = query.value("id").toString();
            programInfo.program_name = query.value("program_name").toString();
            programInfo.create_name = query.value("create_name").toString();
            programInfo.create_time = query.value("create_time").toDateTime();
            programInfo.remark = query.value("remark").toString();
            programInfo.belong_standard_equipment = query.value("belong_standard_equipment").toString();
            programInfo.equipment_item_category = query.value("equipment_item_category").toString();
            programInfo.equipment_name = query.value("equipment_name").toString();
            programInfo.model = query.value("model").toString();
            programInfo.help_instruction = query.value("help_instruction").toString();
            result.append(programInfo);
        }
    } else {
        qDebug() << "Query execution failed: " << query.lastError().text();
    }
   return result;

}
//查询检定项分类  参数 装置字典键  例如 1 ,2  可传空值 “” 查询所有
QList<itemCategory> BaseCommonApi::getitemCategoryList(QString item)
{
    QList<itemCategory> result;
    QSqlQuery query;
    if(item.isEmpty() || item.isNull()){
        query.prepare("SELECT * FROM biz_business_device_measure_item_category");
    }else {
        query.prepare("SELECT * FROM biz_business_device_measure_item_category  WHERE  belong_standard_equipment = :item ");
        query.bindValue(":item", item);
    }
    if (query.exec()) {
        while (query.next()) {
            itemCategory category;
            category.id = query.value("id").toString();
            category.category_no = query.value("category_no").toString();
            category.category_name = query.value("category_name").toString();
            category.create_time = query.value("create_time").toDateTime();
            category.device_type = query.value("device_type").toString();
            category.belong_standard_equipment = query.value("belong_standard_equipment").toString();
            category.measure_category = query.value("measure_category").toString();
            category.technology_file = query.value("technology_file").toString();
            category.update_time = query.value("update_time").toDateTime();
            category.lab_x = query.value("lab_x").toString();
            category.lab_h = query.value("lab_h").toString();
            category.wiring_diagram = query.value("wiring_diagram").toString();
            result.append(category);
        }
    } else {
        qDebug() << "Query execution failed: " << query.lastError().text();
    }
              return result;
}


//检定程序管理-编辑 查询
VerificationProgramInfo BaseCommonApi::getVerificationProgramInfo(QString id)
{
    VerificationProgramInfo result;
    QSqlQuery query;
    query.prepare("SELECT * FROM zd_verification_program_info WHERE id = :id ");
    query.bindValue(":id", id);
    if (query.exec()) {
        while (query.next()) {
            VerificationProgramInfo programInfo;
            programInfo.id = query.value("id").toString();
            programInfo.program_name = query.value("program_name").toString();
            programInfo.create_name = query.value("create_name").toString();
            programInfo.create_time = query.value("create_time").toDateTime();
            programInfo.remark = query.value("remark").toString();
            programInfo.img_path = query.value("img_path").toString();
            programInfo.tested_device_id = query.value("tested_device_id").toString();
            programInfo.standard_device_id = query.value("standard_device_id").toString();
            programInfo.update_time = query.value("update_time").toDateTime();
            programInfo.belong_standard_equipment = query.value("belong_standard_equipment").toString();
            programInfo.equipment_item_category = query.value("equipment_item_category").toString();
            programInfo.equipment_name = query.value("equipment_name").toString();
            programInfo.model = query.value("model").toString();
            programInfo.help_instruction = query.value("help_instruction").toString();
            result = programInfo;
        }
    } else {
        qDebug() << "Query execution failed: " << query.lastError().text();
    }
              return result;
}





//查询设备通信接口
QList<VerificationProgramConfigInterface> BaseCommonApi::getVerificationProgramConfigInterface(QString deviceId)
{
    QList<VerificationProgramConfigInterface> result;
    QSqlQuery query;
    query.prepare("SELECT id,device_id ,communication_type ,serial_port ,visa ,create_time ,update_time "
     "FROM zd_communication_setting WHERE device_id =   :deviceId  ");
    query.bindValue(":deviceId", deviceId);
    if (query.exec()) {
        while (query.next()) {
            VerificationProgramConfigInterface configInterface;
            configInterface.id = query.value("id").toString();
            configInterface.device_id = query.value("device_id").toString();
            configInterface.communication_type = query.value("communication_type").toString();
            configInterface.serial_port = query.value("serial_port").toString();
            configInterface.visa = query.value("visa").toString();
            configInterface.create_time = query.value("create_time").toDateTime();
            configInterface.update_time = query.value("update_time").toDateTime();

            result.append(configInterface);
        }
    } else {
        qDebug() << "Query execution failed: " << query.lastError().text();
    }
                  return result;
};


//新建检定程序
bool BaseCommonApi::InsertVerificationProgramInfo(VerificationProgramInfo verInfo)
{
    QSqlQuery query;
    query.prepare(" INSERT INTO zd_verification_program_info (id,program_name,create_name,create_time, "
                  "remark,img_path,tested_device_id,standard_device_id,update_time,belong_standard_equipment,"
                  "equipment_item_category,equipment_name,model,help_instruction)"
                  " VALUES (:id, :program_name, :create_name, :create_time, :remark, :img_path, :tested_device_id, "
                  ":standard_device_id,:update_time,:belong_standard_equipment,:equipment_item_category,"
                  ":equipment_name,:model,:help_instruction);");
       QString formattedDateTime = verInfo.create_time.toString("yyyy-MM-dd HH:mm:ss");
       query.bindValue(":id", verInfo.id);
       query.bindValue(":program_name", verInfo.program_name);
       query.bindValue(":create_name", verInfo.create_name);
       query.bindValue(":create_time", formattedDateTime);
       query.bindValue(":remark", verInfo.remark);
       query.bindValue(":img_path", verInfo.img_path);
       query.bindValue(":tested_device_id", verInfo.tested_device_id);
       query.bindValue(":standard_device_id", verInfo.standard_device_id);
       query.bindValue(":update_time",formattedDateTime);
       query.bindValue(":belong_standard_equipment",verInfo.belong_standard_equipment);
       query.bindValue(":equipment_item_category",verInfo.equipment_item_category);
       query.bindValue(":equipment_name",verInfo.equipment_name);
       query.bindValue(":model",verInfo.model);
       query.bindValue(":help_instruction",verInfo.help_instruction);
       bool isSuccess = query.exec();
       if (!isSuccess) {
           qDebug() << "InsertTaskBasic query failed: " << query.lastError().text();
       }

       return isSuccess;
};

//新增通讯接口
bool BaseCommonApi::InsertVerificationProgramConfigInterface(VerificationProgramConfigInterface configInterdace)
{
    QSqlQuery query;
    query.prepare("INSERT INTO zd_communication_setting (id,device_id,communication_type,serial_port,visa,create_time,update_time) "
                "  VALUES (:id,:device_id,:communication_type,:serial_port,:visa,:create_time,:update_time)");
        QString formattedDateTime = configInterdace.create_time.toString("yyyy-MM-dd HH:mm:ss");
        QString formattedUpdateDateTime = configInterdace.update_time.toString("yyyy-MM-dd HH:mm:ss");
       query.bindValue(":id", configInterdace.id);
       query.bindValue(":device_id", configInterdace.device_id);
       query.bindValue(":communication_type", configInterdace.communication_type);
       query.bindValue(":serial_port", configInterdace.serial_port);
       query.bindValue(":visa", configInterdace.visa);
       query.bindValue(":create_time", formattedDateTime);
       query.bindValue(":update_time", formattedUpdateDateTime);
       bool isSuccess = query.exec();
       if (!isSuccess) {
           qDebug() << "InsertTaskBasic query failed: " << query.lastError().text();
       }

       return isSuccess;
};

//更新检定程序
bool BaseCommonApi::UpdateVerificationProgramInfo(VerificationProgramInfo verInfo)
{
    QSqlQuery query;
       query.prepare("UPDATE zd_verification_program_info "
                     " SET program_name = :program_name,"
                     "create_name = :create_name, "
                     "create_time = :create_time,"
                     "remark = :remark,"
                     "img_path = :img_path,"
                     "tested_device_id = :tested_device_id,"
                     "standard_device_id = :standard_device_id ,"
                     "update_time = :update_time, "
                     "belong_standard_equipment = :belong_standard_equipment,"
                     "equipment_item_category = :equipment_item_category,"
                     "equipment_name = :equipment_name,"
                     "model=:model,"
                     "help_instruction=:help_instruction "
                     " WHERE id = :id;");
         QString formattedDateTime = verInfo.create_time.toString("yyyy-MM-dd HH:mm:ss");
         QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
         query.bindValue(":update_time",currentDateTime);
         query.bindValue(":program_name", verInfo.program_name);
         query.bindValue(":create_name", verInfo.create_name);
         query.bindValue(":create_time", formattedDateTime);
         query.bindValue(":remark", verInfo.remark);
         query.bindValue(":img_path", verInfo.img_path);
         query.bindValue(":tested_device_id", verInfo.tested_device_id);
         query.bindValue(":standard_device_id", verInfo.standard_device_id);
         query.bindValue(":belong_standard_equipment", verInfo.belong_standard_equipment);
         query.bindValue(":equipment_item_category", verInfo.equipment_item_category);
         query.bindValue(":equipment_name", verInfo.equipment_name);
         query.bindValue(":model", verInfo.model);
         query.bindValue(":help_instruction", verInfo.help_instruction);
         query.bindValue(":id", verInfo.id);
         bool isSuccess = query.exec();
               qDebug() << "执行的sql:" <<query.lastQuery();
         if (!isSuccess) {
             qDebug() << "Insert query failed: " << query.lastError().text();
         }
         return isSuccess;
};
//更新通讯接口
bool BaseCommonApi::UpdateVerificationProgramConfigInterface(VerificationProgramConfigInterface configInterdace)
{
    QSqlQuery query;
       query.prepare("UPDATE zd_communication_setting SET communication_type = :communication_type, "
                             " serial_port = :serial_port,visa = :visa,update_time = :update_time "
                     " WHERE device_id = :device_id;");
       QString formattedDateTime = configInterdace.update_time.toString("yyyy-MM-dd HH:mm:ss");
         query.bindValue(":communication_type", configInterdace.communication_type);
         query.bindValue(":serial_port", configInterdace.serial_port);
         query.bindValue(":visa", configInterdace.visa);
         query.bindValue(":update_time", formattedDateTime);
         query.bindValue(":device_id", configInterdace.device_id);
         bool isSuccess = query.exec();
         if (!isSuccess) {
             qDebug() << "Insert query failed: " << query.lastError().text();
         }
         return isSuccess;
};
//删除检定程序
bool BaseCommonApi::DeleteVerificationProgramInfo(QString id)
{
    QSqlQuery query;
      //删除检定程序
      query.prepare("DELETE FROM zd_verification_program_info WHERE id = :id");
      query.bindValue(":id", id);

      if (!query.exec()) {
          qDebug() << "删除失败: " << query.lastError().text();
          return false;
      }
      return true;
};

//查询指令库  参数 检定程序id
QList<InstructionLib> BaseCommonApi::getInstructionLib(QString verification_program_id)
{
    QList<InstructionLib> result;
    QSqlQuery query;
       QString sql = "SELECT * FROM zd_instruction_library WHERE device_id = %1 ";
       QString ssql = sql.arg(verification_program_id);
       if (query.exec(ssql)) {
           while (query.next()) {
               InstructionLib instruction;
               instruction.id = query.value("id").toString();
               instruction.device_id = query.value("device_id").toString();
               instruction.device_name = query.value("device_name").toString();
               instruction.instruct_config = query.value("instruct_config").toString();
               instruction.instruct_read = query.value("instruct_read").toString();
               instruction.type = query.value("type").toString();
               instruction.belong_vername = query.value("belong_vername").toString();
               instruction.belong_checkname = query.value("belong_checkname").toString();
               instruction.create_time = query.value("create_time").toDateTime();
               instruction.update_time = query.value("update_time").toDateTime();
//               instruction.verification_program_id = query.value("verification_program_id").toString();
               instruction.param = query.value("param").toString();
               result.append(instruction);
           }
       } else {
           qDebug() << "Query execution failed: " << query.lastError().text();
       }
               return result;
};
//查询检定项用于在新增指令时筛选 例如DCV ACI   如果equipment_item_category_id为空查询所有
QList<Params> BaseCommonApi::getParams(QString belong_standard_equipment_id,QString equipment_item_category_id)
{
    QList<Params> result;
    QSqlQuery query;
    QList<itemCategory> standard_item = getitemCategoryList(belong_standard_equipment_id);
    switch (belong_standard_equipment_id.toInt()) {
        case 1:
            if(equipment_item_category_id.isNull() || equipment_item_category_id.isEmpty())
            {
                query.prepare("SELECT DISTINCT bbdmidc.params FROM biz_business_device_measure_item_data_calibrator bbdmidc "
                              " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id= bbdmidc.item_id ");
            }else {
                query.prepare("SELECT DISTINCT bbdmidc.params FROM biz_business_device_measure_item_data_calibrator bbdmidc "
                              " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id= bbdmidc.item_id "
                              " WHERE bbdmii.item_category_id = :equipment_item_category_id ");
            }
            query.bindValue(":equipment_item_category_id", equipment_item_category_id);
            if (query.exec()) {
                while (query.next()) {
                    Params param;
                    param.param = query.value("params").toString();
                    result.append(param);
                }
                 }else {
                qDebug() << "Query execution failed: " << query.lastError().text();
                }
            break;
         case 2:
            if(equipment_item_category_id.isNull() || equipment_item_category_id.isEmpty())
            {
                query.prepare("SELECT DISTINCT  data_type FROM biz_business_device_measure_item_data_dc_power bbdmiddp "
                              " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id= bbdmiddp.item_id");
            }else {
                query.prepare("SELECT DISTINCT  data_type FROM biz_business_device_measure_item_data_dc_power bbdmiddp "
                              " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id= bbdmiddp.item_id "
                              "WHERE bbdmii.item_category_id = :equipment_item_category_id ");
            }
            query.bindValue(":equipment_item_category_id", equipment_item_category_id);
            if (query.exec()) {
                while (query.next()) {
                    Params param;
                    QString data_type = query.value("data_type").toString();
                    switch (data_type.toInt()) {
                    case 1:
                        param.param = "电源电压调整率";
                        break;
                    case 2:
                        param.param = "负载调整率";
                        break;
                    case 3:
                        param.param = "电压示值误差";
                        break;
                    case 4:
                        param.param = "电流示值误差(直接测量)";
                        break;
                    case 5:
                        param.param = "电流示值误差(间接测量)";
                        break;
                    case 6:
                        param.param = "纹波电压";
                        break;
                    case 7:
                        param.param = "输出电压短期稳定性";
                        break;
                    }
                    result.append(param);
                }
            }
              break;
    case 4: {
        bool isExit = false;
        QString itemName;
        if (!equipment_item_category_id.isNull() && !equipment_item_category_id.isEmpty()) {
            for (int i = 0; i < standard_item.length(); i++) {
                if (equipment_item_category_id.contains(standard_item[i].id)) {
                    isExit = true;
                    itemName = standard_item[i].category_name;
                    break; // 找到匹配项后退出循环
                }
            }
            if (isExit && itemName.contains("一般压力表")) {
                Params param;
                param.param = "示值误差/回程误差/轻敲位移";
                result.append(param);
            }
        } else {
            Params param;
            param.param = "示值误差/回程误差/轻敲位移";
            Params param1;
            param1.param = "示值误差";
            Params param2;
            param2.param = "回程误差";
            Params param3;
            param3.param = "轻敲位移";
            QList<Params> paramList;
            paramList.append(param1);
            paramList.append(param2);
            paramList.append(param3);
            for (int i = 0; i < paramList.length(); i++) {
                result.append(paramList[i]);
            }
        }
        break; // 确保每个case结束都有break语句
    }
    case 5:{
        if(!equipment_item_category_id.isNull() || equipment_item_category_id.isEmpty())
      {
            query.prepare("SELECT DISTINCT bbdmidrt.data_type,bbdmii.item_category_name FROM biz_business_device_measure_item_data_resistance_thermometer bbdmidrt"
                          " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id= bbdmidrt.item_id"
                          " WHERE bbdmii.item_category_id = :equipment_item_category_id ");
            query.bindValue(":equipment_item_category_id", equipment_item_category_id);
            if (query.exec()) {
                while (query.next()) {
                    Params param;
                    param.param = query.value("data_type").toString();
                    param.itemCategoryName = query.value("item_category_name").toString();
                    if(param.param == "1" && param.itemCategoryName.contains("恒温槽"))
                        param.param = "波动性";
                    else if (param.param == "2" && param.itemCategoryName.contains("恒温槽")) {
                        param.param = "均匀性";
                    }else if (param.param == "1" && param.itemCategoryName.contains("工业铂铜热电阻")) {
                        param.param = "允差";
                    }else if (param.param == "1" && param.itemCategoryName.contains("工业铂铜热电阻")) {
                        param.param = "结果表格";
                    }
                    result.append(param);
                }
                 }else {
                qDebug() << "Query execution failed: " << query.lastError().text();
                }
                break;
    case 9:
            {
                query.prepare("");
            }
      }
       break;
    }

  }
            return result;
};

//新增指令库
bool BaseCommonApi::InsertInstructionLib(InstructionLib instructionLib)
{
    QSqlQuery query;
    query.prepare("INSERT INTO zd_instruction_library (id,device_id,device_name,instruct_config,instruct_read,"
                  "type,belong_vername,belong_checkname,create_time,update_time,program_id,param) "
                  " VALUES (:id,:device_id,:device_name,:instruct_config,:instruct_read,:type,:belong_vername,"
                  ":belong_checkname,:create_time,:update_time,:program_id,:param)");
       QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
       query.bindValue(":id", instructionLib.id);
       query.bindValue(":device_id", instructionLib.device_id);
       query.bindValue(":device_name", instructionLib.device_name);
       query.bindValue(":instruct_config", instructionLib.instruct_config);
       query.bindValue(":instruct_read", instructionLib.instruct_read);
       query.bindValue(":type", instructionLib.type);
       query.bindValue(":belong_vername", instructionLib.belong_vername);
       query.bindValue(":belong_checkname", instructionLib.belong_checkname);
       query.bindValue(":create_time", currentDateTime);
       query.bindValue(":update_time", currentDateTime);
       query.bindValue(":program_id", instructionLib.program_id);
       query.bindValue(":param", instructionLib.param);
       bool isSuccess = query.exec();
//        qDebug() << "InsertTaskBasic query failed: " << query.lastQuery();
       if (!isSuccess) {
           qDebug() << "InsertTaskBasic query failed: " << query.lastError().text();
       }

       return isSuccess;
};
//删除指令库
bool BaseCommonApi::DeleteInstructionLib(QString id)
{
    QSqlQuery query;
      query.prepare("DELETE FROM zd_instruction_library WHERE id = :id ");
      query.bindValue(":id", id);
      if (!query.exec()) {
          qDebug() << "删除失败: " << query.lastError().text();
          return false;
      }
      return true;
};
//更新指令库
bool BaseCommonApi::UpdateInstructionLib(InstructionLib instructionLib)
{
    QSqlQuery query;
       query.prepare("UPDATE zd_instruction_library SET device_id=:device_id,"
                     "device_name = :device_name,instruct_config = :instruct_config,instruct_read = :instruct_read,"
                     " type = :type,belong_vername = :belong_vername,belong_checkname = :belong_checkname,"
                     "update_time = :update_time,verification_program_id=:verification_program_id,param=:param WHERE id = :id");

        QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
         query.bindValue(":device_id", instructionLib.device_id);
         query.bindValue(":device_name", instructionLib.device_name);
         query.bindValue(":instruct_config", instructionLib.instruct_config);
         query.bindValue(":instruct_read", instructionLib.instruct_read);
         query.bindValue(":type", instructionLib.type);
         query.bindValue(":belong_vername", instructionLib.belong_vername);
         query.bindValue(":belong_checkname", instructionLib.belong_checkname);
         query.bindValue(":update_time", currentDateTime);
         query.bindValue(":program_id", instructionLib.program_id);
         query.bindValue(":param", instructionLib.param);
         query.bindValue(":id", instructionLib.id);
         bool isSuccess = query.exec();
         if (!isSuccess) {
             qDebug() << "Insert query failed: " << query.lastError().text();
         }
         return isSuccess;
};
//雪花算法生成id
qint64 BaseCommonApi::generateId()
{
    return this->idWorker.nextId();
};
QString BaseCommonApi::GenerateTaskNumber()
{
    QList<CreateTaskList> TaskList= BaseCommonApi::getCreateTaskListNew();
    return TaskManager::generateTask(TaskList.first().order_no);
};
bool BaseCommonApi::AddTaskNumber()
{
    return TaskManager::AddCurrenTaskCount();
};
//自动检定-根据被检设备 查询检定项分类
QList<DeviceMeasureEquipmentCatory> BaseCommonApi::getDeviceMeasureEquipmentCatory(QString deviceId)
{
    QList<DeviceMeasureEquipmentCatory> result;
    QSqlQuery query;
    query.prepare(
                  " SELECT bbdmii.*, eemi.category AS deviceType, eemi.equipment_name AS deviceName, "
                  " eemi.model AS model, eemi.help_instruction AS helpInstruction, eemi.instructions_file AS instructionsFile, "
                  " eemi.check_cycle AS checkCycle, eemi.id AS eqptDeviceModelId, eemi.category AS eqptDeviceType "
                  " FROM eqpt_equipment_model_info eemi "
                  " LEFT JOIN biz_business_device_measure_item_info bbdmii ON eemi.id = bbdmii.device_model_id "
                  " JOIN eqpt_equipment_info eei ON eei.model_id = eemi.id "
                  " WHERE  eei.id = :deviceId "
                  " ORDER BY eemi.create_time DESC ");
    query.bindValue(":deviceId",deviceId);
    if (query.exec()) {
        while (query.next()) {
            DeviceMeasureEquipmentCatory catory;
            catory.id = query.value("id").toString();
            catory.device_model_id = query.value("device_model_id").toString();
            catory.belong_standard_equipment = query.value("belong_standard_equipment").toString();
            catory.help_field_instruction = query.value("help_field_instruction").toString();
            catory.item_category_id = query.value("item_category_id").toString();
            catory.item_category_name = query.value("item_category_name").toString();
            catory.deviceType = query.value("deviceType").toString();
            catory.deviceName = query.value("deviceName").toString();
            catory.model = query.value("model").toString();
            catory.helpInstruction = query.value("helpInstruction").toString();
            catory.instructionsFile = query.value("instructionsFile").toString();
            catory.checkCycle = query.value("checkCycle").toString();
            catory.eqptDeviceModelId = query.value("eqptDeviceModelId").toString();
            catory.eqptDeviceType = query.value("eqptDeviceType").toString();
            result.append(catory);
        }
//        qDebug() << query.lastQuery();
    } else {
        qDebug() << "Query execution failed: " << query.lastError().text();
    }
   return result;
};
////自动检定-根据被检设备 查询检定项分类 在查询检定程序
//根据getDeviceMeasureEquipmentCatory返回的item_category_id查询检定程序
QList<VerificationProgramInfo> BaseCommonApi::getVerificationProgramInfoByDeviceId(QString deviceId)
{
    QList<DeviceMeasureEquipmentCatory> catory;
    QSqlQuery query;
    QList<VerificationProgramInfo> result;
    catory = BaseCommonApi::getDeviceMeasureEquipmentCatory(deviceId);
    if(catory.length() <= 0 ){
        return result;
    }
    QString equipment_item_category = catory[0].item_category_id;
    query.prepare("SELECT * from zd_verification_program_info zvpi WHERE zvpi.equipment_item_category = :equipment_item_category");
    query.bindValue(":equipment_item_category",equipment_item_category);
    if (query.exec()) {
        while (query.next()) {
            VerificationProgramInfo info;
            info.id = query.value("id").toString();
            info.program_name = query.value("program_name").toString();
            info.create_name = query.value("create_name").toString();
            info.create_time = query.value("create_time").toDateTime();
            info.remark = query.value("remark").toString();
            info.img_path = query.value("img_path").toString();
            info.tested_device_id = query.value("tested_device_id").toString();
            info.standard_device_id = query.value("standard_device_id").toString();
            info.update_time = query.value("update_time").toDateTime();
            info.belong_standard_equipment = query.value("belong_standard_equipment").toString();
            info.equipment_item_category = query.value("equipment_item_category").toString();
            info.equipment_name = query.value("equipment_name").toString();
            info.model = query.value("model").toString();
            info.help_instruction = query.value("help_instruction").toString();
            result.append(info);
        }

    } else {
        qDebug() << "Query execution failed: " << query.lastError().text();
    }
   return result;
};


//自动检定-结果保存-biz_business_device_measure_info 基本信息表
bool BaseCommonApi::InsertSaveDeviceMeasureInfo(SaveDeviceMeasureInfo saveInfo)
{
    saveInfo.data_no=TaskManager::getsaveResultdatano();

    QSqlQuery query;
    query.prepare("INSERT INTO biz_business_device_measure_info ( "
                  " id, data_no, measure_category, order_id, sample_id, sample_name, model, "
                  " manufacture_no, manufacturer, item_id, trace_date, measure_valid_date, "
                  " measure_address, temperature, humidity, data_source, ipri, ipri_unit, "
                  " isec, isec_unit, vpri, vpri_unit, vsec, vsec_unit, appearance_function_check, "
                  " appearance, appearance_remark, pointer_deflection_stability, "
                  " pointer_deflection_stability_remark, tightness, tightness_remark,"
                  " insulation_resistance, insulation_resistance_remark, measure_medium,"
                  " division, zero_drift_result, work_line_equation, sealing_test, "
                  " insulation_resistance_value, angle_adjust_error, actual_division_value,"
                  " actual_division_value_unit, conclusion, restriction_instruction, outcome,"
                  " other_outcome, remark, other_remark, create_user_id, measure_person_id,"
                  " create_user_name,meter_identify, create_time, update_time "
                " ) VALUES ( "
                  " :id, :data_no, :measure_category, :order_id, :sample_id, :sample_name, :model, "
                  " :manufacture_no, :manufacturer, :item_id, :trace_date, :measure_valid_date, "
                  " :measure_address, :temperature, :humidity, :data_source, :ipri, :ipri_unit, "
                  " :isec, :isec_unit, :vpri, :vpri_unit, :vsec, :vsec_unit, :appearance_function_check, "
                  " :appearance, :appearance_remark, :pointer_deflection_stability,  "
                  " :pointer_deflection_stability_remark, :tightness, :tightness_remark, "
                  " :insulation_resistance, :insulation_resistance_remark, :measure_medium, "
                  " :division, :zero_drift_result, :work_line_equation, :sealing_test, "
                  " :insulation_resistance_value, :angle_adjust_error, :actual_division_value, "
                  " :actual_division_value_unit, :conclusion, :restriction_instruction, :outcome, "
                  " :other_outcome, :remark, :other_remark, :create_user_id, :measure_person_id, "
                  " :create_user_name,:meter_identify, :create_time, :update_time);");
       QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
//       query.bindValue(":id", saveInfo.id); //id 自动生成
       query.bindValue(":id", saveInfo.id);
       query.bindValue(":data_no", saveInfo.data_no);
       query.bindValue(":measure_category", saveInfo.measure_category);
       query.bindValue(":order_id", saveInfo.order_id);
       query.bindValue(":sample_id", saveInfo.sample_id);
       query.bindValue(":sample_name", saveInfo.sample_name);
       query.bindValue(":model", saveInfo.model);
       query.bindValue(":manufacture_no", saveInfo.manufacture_no);
       query.bindValue(":manufacturer", saveInfo.manufacturer);
       query.bindValue(":item_id", saveInfo.item_id);
       query.bindValue(":trace_date", saveInfo.trace_date.toString("yyyy-MM-dd")); // 根据数据库实际日期格式转换
       query.bindValue(":measure_valid_date", saveInfo.measure_valid_date.toString("yyyy-MM-dd"));
       query.bindValue(":measure_address", saveInfo.measure_address);
       query.bindValue(":temperature", saveInfo.temperature);
       query.bindValue(":humidity", saveInfo.humidity);
       query.bindValue(":data_source", saveInfo.data_source);
       query.bindValue(":ipri", saveInfo.ipri);
       query.bindValue(":ipri_unit", saveInfo.ipri_unit);
       query.bindValue(":isec", saveInfo.isec);
       query.bindValue(":isec_unit", saveInfo.isec_unit);
       query.bindValue(":vpri", saveInfo.vpri);
       query.bindValue(":vpri_unit", saveInfo.vpri_unit);
       query.bindValue(":vsec", saveInfo.vsec);
       query.bindValue(":vsec_unit", saveInfo.vsec_unit);
       query.bindValue(":appearance_function_check", saveInfo.appearance_function_check);
       query.bindValue(":appearance", saveInfo.appearance);
       query.bindValue(":appearance_remark", saveInfo.appearance_remark);
       query.bindValue(":pointer_deflection_stability", saveInfo.pointer_deflection_stability);
       query.bindValue(":pointer_deflection_stability_remark", saveInfo.pointer_deflection_stability_remark);
       query.bindValue(":tightness", saveInfo.tightness);
       query.bindValue(":tightness_remark", saveInfo.tightness_remark);
       query.bindValue(":insulation_resistance", saveInfo.insulation_resistance);
       query.bindValue(":insulation_resistance_remark", saveInfo.insulation_resistance_remark);
       query.bindValue(":measure_medium", saveInfo.measure_medium);
       query.bindValue(":division", saveInfo.division);
       query.bindValue(":zero_drift_result", saveInfo.zero_drift_result);
       query.bindValue(":work_line_equation", saveInfo.work_line_equation);
       query.bindValue(":sealing_test", saveInfo.sealing_test);
       query.bindValue(":insulation_resistance_value", saveInfo.insulation_resistance_value);
       query.bindValue(":angle_adjust_error", saveInfo.angle_adjust_error);
       query.bindValue(":actual_division_value", saveInfo.actual_division_value);
       query.bindValue(":actual_division_value_unit", saveInfo.actual_division_value_unit);
       query.bindValue(":conclusion", saveInfo.conclusion);
       query.bindValue(":restriction_instruction", saveInfo.restriction_instruction);
       query.bindValue(":outcome", saveInfo.outcome);
       query.bindValue(":other_outcome", saveInfo.other_outcome);
       query.bindValue(":remark", saveInfo.remark);
       query.bindValue(":other_remark", saveInfo.other_remark);
       query.bindValue(":create_user_id", saveInfo.create_user_id);
       query.bindValue(":measure_person_id", saveInfo.measure_person_id);
       query.bindValue(":create_user_name", saveInfo.create_user_name);
       query.bindValue(":meter_identify",saveInfo.meter_identify);
       query.bindValue(":create_time", currentDateTime);
       query.bindValue(":update_time", currentDateTime);
       bool isSuccess = query.exec();
       if (!isSuccess) {
           qDebug() << "InsertTaskBasic query failed: " << query.lastError().text();
       }else{
           TaskManager::AddResultDataNoCount();
           QString ssql = "INSERT INTO biz_business_device_measure_info ( "
                                            " id, data_no, measure_category, order_id, sample_id, sample_name, model, "
                                            " manufacture_no, manufacturer, item_id, trace_date, measure_valid_date, "
                                            " measure_address, temperature, humidity, data_source, ipri, ipri_unit, "
                                            " isec, isec_unit, vpri, vpri_unit, vsec, vsec_unit, appearance_function_check, "
                                            " appearance, appearance_remark, pointer_deflection_stability, "
                                            " pointer_deflection_stability_remark, tightness, tightness_remark,"
                                            " insulation_resistance, insulation_resistance_remark, measure_medium,"
                                            " division, zero_drift_result, work_line_equation, sealing_test, "
                                            " insulation_resistance_value, angle_adjust_error, actual_division_value,"
                                            " actual_division_value_unit, conclusion, restriction_instruction, outcome,"
                                            " other_outcome, remark, other_remark, create_user_id, measure_person_id,"
                                            " create_user_name, create_time, update_time "
                                          " ) VALUES ( "
                                            " :1, :2, :3, :4, :5, :6, :7, "
                                            " :8, :9, :10, :11, :12, "
                                            " :13, :14, :15, :16, :17, :18, "
                                            " :19, :20, :21, :22, :23, :24, :25, "
                                            " :26, :27, :28,  "
                                            " :29, :30, :31, "
                                            " :32, :33, :34, "
                                            " :35, :36, :37, :38, "
                                            " :39, :40, :41, "
                                            " :42, :43, :44, :45, "
                                            " :46, :47, :48, :49, :50, "
                                            " :51, :52, :53);";
           saveLogToSql(ssql,&saveInfo);
       }

       return isSuccess;
};
//计量检定业务-受检设备检定管理-检定数据管理-所使用的标准、主要测量设备
bool BaseCommonApi::InsertDeviceMeasureEquipment(DeviceMeasureEquipment deviceMeasure)
{
    QSqlQuery query;
    query.prepare("INSERT INTO biz_business_device_measure_equipment "
                  " (id,data_id,equipment_id,create_time,update_time) "
                  " VALUES "
                  " (:id,:data_id,:equipment_id,:create_time,:update_time)");
        QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
//       QString createTime = deviceMeasure.create_time.toString("yyyy-MM-dd HH:mm:ss");
       query.bindValue(":id", deviceMeasure.id);
       query.bindValue(":data_id", deviceMeasure.data_id);
       query.bindValue(":equipment_id", deviceMeasure.equipment_id);
       query.bindValue(":create_time", currentDateTime);
       query.bindValue(":update_time", currentDateTime);
       bool isSuccess = query.exec();
       if (isSuccess) {
            QString ssql = "INSERT INTO biz_business_device_measure_equipment "
                                             " (id,data_id,equipment_id,create_time,update_time) "
                                             " VALUES "
                                             " (:1,:2,:3,:4,:5)";
            saveLogToSql(ssql,&deviceMeasure);
       }else {
           qDebug() << "InsertTaskBasic query failed: " << query.lastError().text();
}

       return isSuccess;
};
bool BaseCommonApi::saveLogToSql(QString ssql,BaseClass* entity)
{    zdDataSync sync;
     QString resultsql;
    QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
     if(!ssql.isEmpty()){
         ssql =  ssql.replace(":","%");
     }
     InsertTask* orderInfo = dynamic_cast<InsertTask*>(entity);
     OrderSampleRelation* orderSampleRelation = dynamic_cast<OrderSampleRelation*>(entity);
    biz_business_lab_executive_info* labExecutiveInfo = dynamic_cast<biz_business_lab_executive_info*>(entity);
    SaveDeviceMeasureInfo* deviceMeasureInfo = dynamic_cast<SaveDeviceMeasureInfo*>(entity);
    DeviceMeasureEquipment* deviceMeasureEquipment = dynamic_cast<DeviceMeasureEquipment*>(entity);
    SaveDeviceMeasureCalibrator* deviceMeasureCalibrator = dynamic_cast<SaveDeviceMeasureCalibrator*>(entity);
     //计量检定业务-受检设备检定管理-检定数据管理检定数据历史修改记录[新增]
    MeasureModifyRecord* deviceModifyRecord = dynamic_cast<MeasureModifyRecord*>(entity);
      //【结果保存】压力
    DeviceMeasureDataPistonGauge* devicePistonGaugeData = dynamic_cast<DeviceMeasureDataPistonGauge*>(entity);
    //【结果保存】直流稳压电源
   bizBusinessDeviceMeasureDataDcPower* deviceDCPowerData = dynamic_cast<bizBusinessDeviceMeasureDataDcPower*>(entity);
    //【结果保存】示波器
   DeviceOscilloscopeCalibration* deviceOscilloscopeData = dynamic_cast<DeviceOscilloscopeCalibration*>(entity);
    //【结果保存】二等铂电阻
  DeviceMeasureDataResistanceThermometer* deviceResistanceThermometerData = dynamic_cast<DeviceMeasureDataResistanceThermometer*>(entity);
  //【结果保存】频谱分析仪
   DeviceMeasureDataSpectrumAnalyzer* deviceSpectrumAnalyzerData = dynamic_cast<DeviceMeasureDataSpectrumAnalyzer*>(entity);
    //【结果保存】信号发生器
  DeviceMeasureDataSignalGenerator* deviceSignalGeneratorData = dynamic_cast<DeviceMeasureDataSignalGenerator*>(entity);
   if(orderInfo !=nullptr){
       resultsql = QString(ssql).arg("'" + orderInfo->order_no + "'")
                                .arg("'" + orderInfo->customer_name + "'")
                                .arg("'" + orderInfo->require_over_time + "'")
                                .arg("'" + orderInfo->deliverer + "'")
                                .arg("'" + orderInfo->deliverer_tel + "'")
                                .arg("'" + orderInfo->undertaker_name + "'")
                                .arg("'" + orderInfo->undertake_time + "'")
                                .arg("'" + QString::number(orderInfo->is_urgent) + "'")
                                .arg("'" + orderInfo->receive_illustrate + "'")
                                .arg("'" + orderInfo->customer_id + "'")
                                .arg("'" + orderInfo->id + "'");
   }
   if(orderSampleRelation !=nullptr){
       resultsql = QString(ssql).arg("'" + orderSampleRelation->id + "'")
                                .arg("'" + orderSampleRelation->order_id + "'")
                                .arg("'" + orderSampleRelation->sample_id + "'")
                                .arg("'" + orderSampleRelation->sample_name + "'")
                                .arg("'" + orderSampleRelation->sample_model + "'")
                                .arg("'" + orderSampleRelation->measure_complete_time.toString() + "'")
                                .arg("'" + currentDateTime + "'")
                                .arg("'" + currentDateTime + "'");
   }
   if(labExecutiveInfo !=nullptr){
       resultsql = QString(ssql).arg("'" + labExecutiveInfo->id + "'")
                                .arg("'" + labExecutiveInfo->order_id + "'")
                                .arg("'" + labExecutiveInfo->sample_id + "'")
                                .arg("'" + labExecutiveInfo->measure_dept_id + "'")
                                .arg("'" + labExecutiveInfo->measure_person_id + "'")
                                .arg("'" + labExecutiveInfo->create_user_id + "'")
                                .arg("'" + labExecutiveInfo->measure_status + "'")
                                .arg("'" + labExecutiveInfo->is_auto + "'")
                               .arg("'" + currentDateTime + "'")
                               .arg("'" + currentDateTime + "'");
   }
     if (deviceMeasureInfo !=nullptr) {
              resultsql = QString(ssql).arg("'" + deviceMeasureInfo->id + "'")
                                       .arg("'" + deviceMeasureInfo->data_no + "'")
                                       .arg("'" + deviceMeasureInfo->measure_category + "'")
                                       .arg("'" + deviceMeasureInfo->order_id + "'")
                                       .arg("'" + deviceMeasureInfo->sample_id + "'")
                                       .arg("'" + deviceMeasureInfo->sample_name + "'")
                                       .arg("'" + deviceMeasureInfo->model + "'")
                                       .arg("'" + deviceMeasureInfo->manufacture_no + "'")
                                       .arg("'" + deviceMeasureInfo->manufacturer + "'")
                                       .arg("'" + deviceMeasureInfo->item_id + "'")
                                       .arg("'" + deviceMeasureInfo->trace_date.toString("yyyy-MM-dd") + "'")
                                       .arg("'" + deviceMeasureInfo->measure_valid_date.toString("yyyy-MM-dd HH:mm:ss") + "'")
                                       .arg("'" + deviceMeasureInfo->measure_address + "'")
                                       .arg(deviceMeasureInfo->temperature.toDouble())
                                       .arg(deviceMeasureInfo->humidity.toDouble())
                                       .arg("'" + deviceMeasureInfo->data_source + "'")
                                       .arg("'" +deviceMeasureInfo->ipri+ "'")
                                       .arg("'" + deviceMeasureInfo->ipri_unit + "'")
                                       .arg("'" +deviceMeasureInfo->isec+ "'")
                                       .arg("'" + deviceMeasureInfo->isec_unit + "'")
                                       .arg("'" +deviceMeasureInfo->vpri+ "'")
                                       .arg("'" + deviceMeasureInfo->vpri_unit + "'")
                                       .arg("'" +deviceMeasureInfo->vsec+ "'")
                                       .arg("'" + deviceMeasureInfo->vsec_unit + "'")
                                       .arg("'" +deviceMeasureInfo->appearance_function_check+ "'")
                                       .arg( deviceMeasureInfo->appearance == "" ? 1: deviceMeasureInfo->appearance.toInt())
                                       .arg("'" + deviceMeasureInfo->appearance_remark + "'")
                                       .arg(deviceMeasureInfo->pointer_deflection_stability == "" ? 1: deviceMeasureInfo->pointer_deflection_stability.toInt())
                                       .arg("'" + deviceMeasureInfo->pointer_deflection_stability_remark + "'")
                                       .arg(deviceMeasureInfo->tightness == "" ? 1: deviceMeasureInfo->tightness.toInt())
                                       .arg("'" + deviceMeasureInfo->tightness_remark + "'")
                                       .arg(deviceMeasureInfo->insulation_resistance == "" ? 1:deviceMeasureInfo->insulation_resistance.toInt())
                                       .arg("'" + deviceMeasureInfo->insulation_resistance_remark + "'")
                                       .arg("'" +deviceMeasureInfo->measure_medium+ "'")
                                       .arg(deviceMeasureInfo->division.toDouble())
                                       .arg("'" +deviceMeasureInfo->zero_drift_result+ "'")
                                       .arg("'" +deviceMeasureInfo->work_line_equation+ "'")
                                       .arg(deviceMeasureInfo->sealing_test== "" ? 1: deviceMeasureInfo->sealing_test.toInt())
                                       .arg("'" +deviceMeasureInfo->insulation_resistance_value+ "'")
                                       .arg(deviceMeasureInfo->angle_adjust_error=="" ? 1:deviceMeasureInfo->angle_adjust_error.toInt())
                                       .arg("'" +deviceMeasureInfo->actual_division_value+ "'")
                                       .arg("'" + deviceMeasureInfo->actual_division_value_unit + "'")
                                       .arg("'" +deviceMeasureInfo->conclusion+ "'")
                                       .arg("'" +deviceMeasureInfo->restriction_instruction+ "'")
                                       .arg("'" +deviceMeasureInfo->outcome+ "'")
                                       .arg("'" + deviceMeasureInfo->other_outcome + "'")
                                       .arg("'" + deviceMeasureInfo->remark + "'")
                                       .arg("'" + deviceMeasureInfo->other_remark + "'")
                                       .arg(deviceMeasureInfo->create_user_id.toInt())
                                       .arg(deviceMeasureInfo->measure_person_id.toInt())
                                       .arg("'" + deviceMeasureInfo->create_user_name + "'")
                                       .arg("'" +currentDateTime+ "'")
                                       .arg("'" +currentDateTime+ "'");
     }
     if(deviceMeasureEquipment!=nullptr){
         resultsql = QString(ssql)
              .arg("'" + deviceMeasureEquipment->id +"'")
              .arg("'" + deviceMeasureEquipment->data_id +"'")
              .arg("'" + deviceMeasureEquipment->equipment_id +"'")
              .arg("'" + currentDateTime + "'")
              .arg("'" + currentDateTime + "'");
     }
   if(deviceMeasureCalibrator !=nullptr){
        resultsql = QString(ssql)
             .arg("'" + deviceMeasureCalibrator->id +"'")
             .arg("'" +deviceMeasureCalibrator->data_id+"'")
             .arg("'" +deviceMeasureCalibrator->item_data_id+"'")
             .arg("'" +deviceMeasureCalibrator->maximum_error_formula+"'")
             .arg("'" +deviceMeasureCalibrator->error_param_a+"'")
             .arg("'" +deviceMeasureCalibrator->error_param_b+"'")
             .arg("'" +deviceMeasureCalibrator->params+"'")
             .arg("'" +deviceMeasureCalibrator->capacity+"'")
             .arg("'" +deviceMeasureCalibrator->unit+"'")
             .arg("'" +deviceMeasureCalibrator->frequency+"'")
             .arg("'" +deviceMeasureCalibrator->frequency_unit+"'")
             .arg("'" +deviceMeasureCalibrator->range_range+"'")
             .arg("'" +deviceMeasureCalibrator->standard_value+"'")
             .arg("'" +deviceMeasureCalibrator->indicating_value+"'")
             .arg("'" +deviceMeasureCalibrator->maximum_error+"'")
             .arg("'" +deviceMeasureCalibrator->absolute_error+"'")
             .arg("'" +deviceMeasureCalibrator->resolution+"'")
             .arg("'" +deviceMeasureCalibrator->line_mode+"'")
             .arg("'" +deviceMeasureCalibrator->remark+"'").arg("'" +deviceMeasureCalibrator->an+"'").arg("'" +deviceMeasureCalibrator->bn+"'")
                .arg("'" +deviceMeasureCalibrator->cn+"'") .arg("'" +deviceMeasureCalibrator->delta_an+"'") .arg("'" +deviceMeasureCalibrator->delta_bn+"'")
                 .arg("'" +deviceMeasureCalibrator->delta_cn+"'") .arg("'" +deviceMeasureCalibrator->measure_indication_value+"'") .arg("'" +deviceMeasureCalibrator->standard_value_upper_limit+"'")
                .arg("'" +deviceMeasureCalibrator->accuracy_level+"'").arg("'" +currentDateTime+"'").arg("'" +currentDateTime+"'");
        qDebug()<<">>"<<resultsql;
     }
   if(deviceModifyRecord !=nullptr){
       resultsql = QString(ssql).arg("'" + deviceModifyRecord->id+"'")
                                .arg("'" + deviceModifyRecord->data_id+"'")
                                .arg("'" + deviceModifyRecord->source_system+"'")
                                .arg("'" + deviceModifyRecord->modify_content+"'")
                                .arg("'" + deviceModifyRecord->create_user_id+"'")
                                .arg("'" + deviceModifyRecord->create_user_name+"'")
                                .arg("'" + currentDateTime+"'")
                                .arg("'" + currentDateTime+"'");
   }
   if(devicePistonGaugeData !=nullptr){
       resultsql = QString(ssql).arg("'" + devicePistonGaugeData->id + "'")
                                .arg("'" + devicePistonGaugeData->data_id + "'")
                                .arg("'" + devicePistonGaugeData->data_type + "'")
                                .arg("'" + devicePistonGaugeData->data_category + "'")
                                .arg("'" + devicePistonGaugeData->indicating_value + "'")
                                .arg("'" + devicePistonGaugeData->before_friction_forward_stroke + "'")
                                .arg("'" + devicePistonGaugeData->before_friction_reverse_stroke + "'")
                                .arg("'" + devicePistonGaugeData->after_friction_forward_stroke + "'")
                                .arg("'" + devicePistonGaugeData->after_friction_reverse_stroke + "'")
                                .arg("'" + devicePistonGaugeData->variation_forward_stroke + "'")
                                .arg("'" + devicePistonGaugeData->variation_reverse_stroke + "'")
                                .arg( devicePistonGaugeData->theoretical_output_value=="" ? "NULL" : "'" +devicePistonGaugeData->theoretical_output_value+ "'" )
                                .arg("'" + devicePistonGaugeData->first_forward_stroke + "'")
                                .arg("'" + devicePistonGaugeData->first_reverse_stroke + "'")
                                .arg("'" + devicePistonGaugeData->second_forward_stroke + "'")
                                .arg("'" + devicePistonGaugeData->second_reverse_stroke + "'")
                                .arg("'" + devicePistonGaugeData->third_forward_stroke + "'")
                                .arg("'" + devicePistonGaugeData->third_reverse_stroke + "'")
                                .arg("'" + devicePistonGaugeData->indicating_error + "'")
                                .arg("'" + devicePistonGaugeData->return_error + "'")
                                .arg("'" + devicePistonGaugeData->average_forward_stroke + "'")
                                .arg("'" + devicePistonGaugeData->average_reverse_stroke + "'")
                                .arg("'" + devicePistonGaugeData->average_value + "'")
                                .arg("'" + devicePistonGaugeData->average_return_error + "'")
                                .arg("'" + devicePistonGaugeData->item + "'")
                                .arg("'" + devicePistonGaugeData->max_indicating_error + "'")
                                .arg("'" + devicePistonGaugeData->max_return_error + "'")
                                .arg("'" + devicePistonGaugeData->max_friction_error + "'")
                                .arg("'" + devicePistonGaugeData->maximum_error_absolute + "'")
                                .arg("'" + devicePistonGaugeData->forward_stroke_switch_value + "'")
                                .arg("'" + devicePistonGaugeData->reverse_stroke_switch_value + "'")
                                .arg("'" + devicePistonGaugeData->point_deviation + "'")
                                .arg("'" + devicePistonGaugeData->different_gap + "'")
                                .arg("'" + devicePistonGaugeData->max_point_deviation + "'")
                                .arg("'" + devicePistonGaugeData->allow_point_deviation + "'")
                                .arg("'" + devicePistonGaugeData->max_different_gap + "'")
                                .arg("'" + devicePistonGaugeData->allow_different_gap + "'")
                                .arg("'" + devicePistonGaugeData->zero_drift_one + "'")
                                .arg("'" + devicePistonGaugeData->zero_drift_two + "'")
                                .arg("'" + devicePistonGaugeData->zero_drift_three + "'")
                                .arg("'" + devicePistonGaugeData->zero_drift_four + "'")
                                .arg("'" + devicePistonGaugeData->zero_drift_five + "'")
                                .arg("'" + devicePistonGaugeData->intercept_a + "'")
                                .arg("'" + devicePistonGaugeData->slope_b + "'")
                                .arg("'" + devicePistonGaugeData->sensitivity_b + "'")
                                .arg("'" + devicePistonGaugeData->repeatability_r + "'")
                                .arg("'" + devicePistonGaugeData->hysteresis_h + "'")
                                .arg("'" + devicePistonGaugeData->linear_l + "'")
                                .arg("'" + devicePistonGaugeData->basic_error_a + "'")
                                .arg("'" + devicePistonGaugeData->periodic_stability_s_b + "'")
                                .arg("'" + currentDateTime + "'")
                                .arg("'" + currentDateTime + "'");
       qDebug()<<resultsql;
   }
   if(deviceDCPowerData != nullptr){
       resultsql = QString(ssql).arg("'" + deviceDCPowerData->id + "'")
                                .arg("'" + deviceDCPowerData->data_id + "'")
                                .arg("'" + deviceDCPowerData->data_type + "'")
                                .arg("'" + deviceDCPowerData->data_type_type + "'")
                                .arg("'" +deviceDCPowerData->output_channel+ "'")
                                .arg("'" +deviceDCPowerData->unit+ "'")
                                .arg("'" +deviceDCPowerData->voltage_regulator_output_value+ "'")
                                .arg("'" +deviceDCPowerData->voltage_max_difference+ "'")
                                .arg("'" +deviceDCPowerData->technical_index+ "'")
                                .arg("'" +deviceDCPowerData->technical_index_symbol+ "'")
                                .arg("'" +deviceDCPowerData->voltage_regulation+ "'")
                                .arg("'" +deviceDCPowerData->load_situation+ "'")
                                .arg("'" +deviceDCPowerData->voltage_output_value+ "'")
                                .arg("'" +deviceDCPowerData->voltage_difference+ "'")
                                .arg("'" +deviceDCPowerData->load_regulation+ "'")
                                .arg("'" +deviceDCPowerData->measure_indication_value+ "'")
                                .arg("'" +deviceDCPowerData->standard_value+ "'")
                                .arg("'" +deviceDCPowerData->maximum_error+ "'")
                                .arg("'" +deviceDCPowerData->maximum_error_unit+ "'")
                                .arg("'" +deviceDCPowerData->absolute_error+ "'")
                                .arg(deviceDCPowerData->resolution.toDouble())
                                .arg("'" +deviceDCPowerData->standard_voltage_value+ "'")
                                .arg("'" +deviceDCPowerData->standard_voltage_value_unit+ "'")
                                .arg("'" +deviceDCPowerData->standard_resistance_value+ "'")
                                .arg("'" +deviceDCPowerData->standard_resistance_value_unit+ "'")
                                .arg("'" +deviceDCPowerData->ripple_voltage+ "'")
                                .arg("'" +deviceDCPowerData->output_voltage_max_change+ "'")
                                .arg("'" +deviceDCPowerData->short_term_stability+ "'")
                                .arg(deviceDCPowerData->exceed_mark.toInt())
                                .arg("'" +currentDateTime+ "'")
                                .arg("'" +currentDateTime+ "'");
   }
   if(deviceOscilloscopeData !=nullptr){
       resultsql = QString(ssql).arg("'" + deviceOscilloscopeData->id + "'")
                                .arg("'" + deviceOscilloscopeData->data_id + "'")
                                .arg("'" + deviceOscilloscopeData->data_type + "'")
                                .arg("'" + deviceOscilloscopeData->cycle_signal + "'")
                                .arg("'" + deviceOscilloscopeData->cycle_signal_unit + "'")
                                .arg("'" + deviceOscilloscopeData->time_base_absolute_error + "'")
                                .arg("'" + deviceOscilloscopeData->time_base_absolute_error_unit + "'")
                                .arg("'" + deviceOscilloscopeData->time_base_relative_error + "'")
                                .arg("'" + deviceOscilloscopeData->time_base_relative_error_unit + "'")
                                .arg("'" + deviceOscilloscopeData->technical_index_symbol + "'")
                                .arg("'" + deviceOscilloscopeData->technical_index + "'")
                                .arg("'" + deviceOscilloscopeData->technical_index_unit + "'")
                                .arg("'" + deviceOscilloscopeData->conclusion + "'")
                                .arg("'" + deviceOscilloscopeData->thoroughfare + "'")
                                .arg("'" + deviceOscilloscopeData->impedance + "'")
                                .arg("'" + deviceOscilloscopeData->impedance_unit + "'")
                                .arg("'" + deviceOscilloscopeData->vertical_deflect_coefficient + "'")
                                .arg("'" + deviceOscilloscopeData->vertical_deflect_coefficient_unit + "'")
                                .arg("'" + deviceOscilloscopeData->standard_value + "'")
                                .arg("'" + deviceOscilloscopeData->standard_value_unit + "'")
                                .arg("'" + deviceOscilloscopeData->measure_value + "'")
                                .arg("'" + deviceOscilloscopeData->measure_value_unit + "'")
                                .arg("'" + deviceOscilloscopeData->relative_error + "'")
                                .arg("'" + deviceOscilloscopeData->error_value + "'")
                                .arg("'" + deviceOscilloscopeData->band_width + "'")
                                .arg("'" + deviceOscilloscopeData->band_width_unit + "'")
                                .arg("'" + deviceOscilloscopeData->reference_amplitude + "'")
                                .arg("'" + deviceOscilloscopeData->reference_amplitude_unit + "'")
                                .arg("'" + deviceOscilloscopeData->measure_amplitude + "'")
                                .arg("'" + deviceOscilloscopeData->measure_amplitude_unit + "'")
                                .arg("'" + deviceOscilloscopeData->decibel_number + "'")
                                .arg("'" + deviceOscilloscopeData->trigger_type + "'")
                                .arg("'" + deviceOscilloscopeData->signal_frequency + "'")
                                .arg("'" + deviceOscilloscopeData->signal_frequency_unit + "'")
                                .arg("'" + deviceOscilloscopeData->item_type + "'")
                                .arg("'" + deviceOscilloscopeData->nominal_value + "'")
                                .arg("'" + deviceOscilloscopeData->nominal_value_unit + "'")
                                .arg("'" + deviceOscilloscopeData->top_measure_value + "'")
                                .arg("'" + deviceOscilloscopeData->top_measure_value_unit + "'")
                                .arg("'" + deviceOscilloscopeData->bottom_measure_value + "'")
                                .arg("'" + deviceOscilloscopeData->bottom_measure_value_unit + "'")
                                .arg("'" + deviceOscilloscopeData->scan_type + "'")
                                .arg("'" + deviceOscilloscopeData->horizontal_scale_gear + "'")
                                .arg("'" + deviceOscilloscopeData->horizontal_scale_gear_unit + "'")
                                .arg("'" + deviceOscilloscopeData->vertical_scale_gear + "'")
                                .arg("'" + deviceOscilloscopeData->vertical_scale_gear_unit + "'")
                                .arg("'" + deviceOscilloscopeData->frequency_upper + "'")
                                .arg("'" + deviceOscilloscopeData->frequency_upper_unit + "'")
                                .arg("'" + deviceOscilloscopeData->output_signal_amplitude + "'")
                                .arg("'" + deviceOscilloscopeData->rise_time + "'")
                                .arg("'" + deviceOscilloscopeData->correct_rise_time + "'")
                                .arg("'" + deviceOscilloscopeData->signal_type + "'")
                                .arg("'" + deviceOscilloscopeData->nominal_amplitude_value + "'")
                                .arg("'" + deviceOscilloscopeData->nominal_amplitude_value_unit + "'")
                                .arg("'" + deviceOscilloscopeData->nominal_frequency_value + "'")
                                .arg("'" + deviceOscilloscopeData->nominal_frequency_value_unit + "'")
                                .arg("'" + deviceOscilloscopeData->measure_amplitude_value + "'")
                                .arg("'" + deviceOscilloscopeData->measure_amplitude_value_unit + "'")
                                .arg("'" + deviceOscilloscopeData->measure_frequency_value + "'")
                                .arg("'" + deviceOscilloscopeData->frequency_deviation + "'")
                                .arg("'" + deviceOscilloscopeData->amplitude_deviation + "'")
                                .arg("'" + deviceOscilloscopeData->exceed_mark + "'")
                                .arg("'" + currentDateTime + "'")
                                .arg("'" + currentDateTime + "'");
   }
   if(deviceResistanceThermometerData!=nullptr){
       resultsql = QString(ssql).arg("'" + deviceResistanceThermometerData->id + "'")
                                .arg("'" + deviceResistanceThermometerData->data_id + "'")
                                .arg("'" + deviceResistanceThermometerData->data_type + "'")
                                .arg("'" + deviceResistanceThermometerData->data_category + "'")
                                .arg("'" + deviceResistanceThermometerData->upper_lower_point + "'")
                                .arg("'" + deviceResistanceThermometerData->location + "'")
                                .arg("'" + deviceResistanceThermometerData->unit + "'")
                                .arg("'" + deviceResistanceThermometerData->one_value + "'")
                                .arg("'" + deviceResistanceThermometerData->two_value + "'")
                                .arg("'" + deviceResistanceThermometerData->three_value + "'")
                                .arg("'" + deviceResistanceThermometerData->four_value + "'")
                                .arg("'" + deviceResistanceThermometerData->five_value + "'")
                                .arg("'" + deviceResistanceThermometerData->six_value + "'")
                                .arg("'" + deviceResistanceThermometerData->seven_value + "'")
                                .arg("'" + deviceResistanceThermometerData->eight_value + "'")
                                .arg("'" + deviceResistanceThermometerData->nine_value + "'")
                                .arg("'" + deviceResistanceThermometerData->ten_value + "'")
                                .arg("'" + deviceResistanceThermometerData->eleven_value + "'")
                                .arg("'" + deviceResistanceThermometerData->twelve_value + "'")
                                .arg("'" + deviceResistanceThermometerData->thirteen_value + "'")
                                .arg("'" + deviceResistanceThermometerData->fourteen_value + "'")
                                .arg("'" + deviceResistanceThermometerData->fifteen_value + "'")
                                .arg("'" + deviceResistanceThermometerData->max_value + "'")
                                .arg("'" + deviceResistanceThermometerData->min_value + "'")
                                .arg("'" + deviceResistanceThermometerData->volatility + "'")
                                .arg("'" + deviceResistanceThermometerData->upper_temperature_different + "'")
                                .arg("'" + deviceResistanceThermometerData->lower_temperature_different + "'")
                                .arg("'" + deviceResistanceThermometerData->max_horizontal_temperature_different + "'")
                                .arg("'" + deviceResistanceThermometerData->max_work_temperature_different + "'")
                                .arg("'" + deviceResistanceThermometerData->calibrated_point + "'")
                                .arg("'" + deviceResistanceThermometerData->indicating_value_forward_stroke + "'")
                                .arg("'" + deviceResistanceThermometerData->indicating_value_reverse_stroke + "'")
                                .arg("'" + deviceResistanceThermometerData->measure_indication_value_forward_stroke + "'")
                                .arg("'" + deviceResistanceThermometerData->measure_indication_value_reverse_stroke + "'")
                                .arg("'" + deviceResistanceThermometerData->indicating_error_forward_stroke + "'")
                                .arg("'" + deviceResistanceThermometerData->indicating_error_reverse_stroke + "'")
                                .arg("'" + deviceResistanceThermometerData->maximum_error + "'")
                                .arg("'" + deviceResistanceThermometerData->urel + "'")
                                .arg("'" + deviceResistanceThermometerData->rank_level + "'")
                                .arg("'" + deviceResistanceThermometerData->nominal_temperature + "'")
                                .arg("'" + deviceResistanceThermometerData->item + "'")
                                .arg("'" + deviceResistanceThermometerData->allow_error_lower + "'")
                                .arg("'" + deviceResistanceThermometerData->allow_error_upper + "'")
                                .arg("'" + deviceResistanceThermometerData->measure_value + "'")
                                .arg("'" + currentDateTime + "'")
                                .arg("'" + currentDateTime + "'");
   }
   if(deviceSpectrumAnalyzerData !=nullptr){
       resultsql = QString(ssql).arg("'" + deviceSpectrumAnalyzerData->id + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->data_id + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->data_type + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->nominal_value + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->unit + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->sweep_width + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->sweep_width_unit + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->horizontal_resolution + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->horizontal_resolution_unit + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->resolution_bandwidth + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->resolution_bandwidth_unit + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->one_value + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->two_value + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->three_value + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->four_value + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->five_value + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->six_value + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->seven_value + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->eight_value + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->nine_value + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->ten_value + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->upper_index_twice + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->upper_index_twice_unit + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->upper_index_thrice + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->upper_index_thrice_unit + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->upper_index_quartic + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->upper_index_quartic_unit + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->lower_index + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->lower_index_unit + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->average_value + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->upper_index + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->upper_index_unit + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->conclusion + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->convert_deviation + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->lower_convert_deviation + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->upper_convert_deviation + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->standard_attenuator_attenuation + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->standard_attenuator_attenuation_unit + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->signal_source_amplitude + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->signal_source_amplitude_unit + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->vertical_scale + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->frequency + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->frequency_unit + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->input_frequency + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->start_frequency + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->start_frequency_unit + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->end_frequency + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->end_frequency_unit + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->revised_result + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->input_attenuator + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->input_attenuator_unit + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->input_attenuator_conversion_effect + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->spectrum_level + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->spectrum_level_unit + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->gain_compression + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->exceed_mark + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->exceed_mark_one + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->exceed_mark_two + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->measure_result + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->measure_result_unit + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->technical_index + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->technical_index_left + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->technical_index_right + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->corrected_value + "'")
                                .arg("'" + deviceSpectrumAnalyzerData->type_value + "'")
                                .arg("'" + currentDateTime + "'")
                                .arg("'" + currentDateTime + "'");
   }
   if(deviceSignalGeneratorData !=nullptr){
       resultsql = QString(ssql).arg("'" + deviceSignalGeneratorData->id + "'")
                                .arg("'" + deviceSignalGeneratorData->data_id + "'")
                                .arg("'" + deviceSignalGeneratorData->data_type + "'")
                                .arg("'" + deviceSignalGeneratorData->nominal_value + "'")
                                .arg("'" + deviceSignalGeneratorData->unit + "'")
                                .arg("'" + deviceSignalGeneratorData->upper_index + "'")
                                .arg("'" + deviceSignalGeneratorData->upper_thd + "'")
                                .arg("'" + deviceSignalGeneratorData->lower_index + "'")
                                .arg("'" + deviceSignalGeneratorData->measure_value + "'")
                                .arg("'" + deviceSignalGeneratorData->measure_value_unit + "'")
                                .arg("'" + deviceSignalGeneratorData->relative_error + "'")
                                .arg("'" + deviceSignalGeneratorData->urel + "'")
                                .arg("'" + deviceSignalGeneratorData->frequency + "'")
                                .arg("'" + deviceSignalGeneratorData->frequency_unit + "'")
                                .arg("'" + deviceSignalGeneratorData->power + "'")
                                .arg("'" + deviceSignalGeneratorData->power_unit + "'")
                                .arg("'" + deviceSignalGeneratorData->amplitude + "'")
                                .arg("'" + deviceSignalGeneratorData->amplitude_unit + "'")
                                .arg("'" + deviceSignalGeneratorData->high_pass_filter + "'")
                                .arg("'" + deviceSignalGeneratorData->high_pass_filter_unit + "'")
                                .arg("'" + deviceSignalGeneratorData->lower_pass_filter + "'")
                                .arg("'" + deviceSignalGeneratorData->lower_pass_filter_unit + "'")
                                .arg("'" + deviceSignalGeneratorData->modulation_rate + "'")
                                .arg("'" + deviceSignalGeneratorData->modulation_rate_unit + "'")
                                .arg("'" + deviceSignalGeneratorData->thd + "'")
                                .arg("'" + deviceSignalGeneratorData->upper_index_symbol + "'")
                                .arg("'" + deviceSignalGeneratorData->upper_index_unit + "'")
                                .arg("'" + deviceSignalGeneratorData->remain_amplitude_modulation + "'")
                                .arg("'" + deviceSignalGeneratorData->harmonic_number + "'")
                                .arg("'" + deviceSignalGeneratorData->fundamental_amplitude + "'")
                                .arg("'" + deviceSignalGeneratorData->fundamental_amplitude_unit + "'")
                                .arg("'" + deviceSignalGeneratorData->harmonic_amplitude + "'")
                                .arg("'" + deviceSignalGeneratorData->harmonic_amplitude_unit + "'")
                                .arg("'" + deviceSignalGeneratorData->offset_frequency + "'")
                                .arg("'" + deviceSignalGeneratorData->offset_frequency_unit + "'")
                                .arg("'" + deviceSignalGeneratorData->exceed_mark + "'")
                                .arg("'" + deviceSignalGeneratorData->exceed_mark_one + "'")
                                .arg("'" + currentDateTime + "'")
                                .arg("'" + currentDateTime + "'");
   }
   sync.ssql = resultsql;
   sync.id = QString::number(BaseCommonApi().generateId());
   sync.sync_type = "0";
   bool isSuccess = BaseCommonApi::InsertzdDataSync(sync);

}
//自动检定-结果保存-检定数据管理多功能校准源数据(自动检定输出或业务创建)
bool BaseCommonApi::InsertVerMultiCal(SaveDeviceMeasureCalibrator measureCalibrator)
{
    QSqlQuery query;
       query.prepare("INSERT INTO biz_business_device_measure_data_calibrator "
                    " (id,data_id,item_data_id,maximum_error_formula,error_param_a,error_param_b,params,capacity,unit,frequency,frequency_unit,"
                     "range_range,standard_value,indicating_value,maximum_error,absolute_error,resolution,line_mode,remark,an,bn,cn,delta_an,"
                     "delta_bn,delta_cn,measure_indication_value,standard_value_upper_limit,accuracy_level,create_time,update_time) "
                     " VALUES "
                    " (:id,:data_id,:item_data_id,:maximum_error_formula,:error_param_a,:error_param_b,:params,:capacity,:unit,:frequency,:frequency_unit,:range_range,:standard_value,:indicating_value,:maximum_error,:absolute_error,:resolution,:line_mode,:remark,:an,:bn,:cn,:delta_an,:delta_bn,:delta_cn,:measure_indication_value,:standard_value_upper_limit,:accuracy_level,:create_time,:update_time);");

//       QString formattedUpdateDateTime = measureCalibrator.create_time.toString("yyyy-MM-dd HH:mm:ss");
       QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
        query.bindValue(":id",measureCalibrator.id);
        query.bindValue(":data_id",measureCalibrator.data_id);
        query.bindValue(":item_data_id",measureCalibrator.item_data_id);
        query.bindValue(":maximum_error_formula",measureCalibrator.maximum_error_formula);
        query.bindValue(":error_param_a",measureCalibrator.error_param_a);
        query.bindValue(":error_param_b",measureCalibrator.error_param_b);
        query.bindValue(":params",measureCalibrator.params);
        query.bindValue(":capacity",measureCalibrator.capacity);
        query.bindValue(":unit",measureCalibrator.unit);
        query.bindValue(":frequency",measureCalibrator.frequency);
        query.bindValue(":frequency_unit",measureCalibrator.frequency_unit);
        query.bindValue(":range_range",measureCalibrator.range_range);
        query.bindValue(":standard_value",measureCalibrator.standard_value);
        query.bindValue(":indicating_value",measureCalibrator.measure_indication_value);   // 暂时改为被检表示值2024年3月27日09:43:27  待修改
        query.bindValue(":maximum_error",measureCalibrator.maximum_error);
        query.bindValue(":absolute_error",measureCalibrator.absolute_error);
        query.bindValue(":resolution",measureCalibrator.resolution);
        query.bindValue(":line_mode",measureCalibrator.line_mode);
        query.bindValue(":remark",measureCalibrator.remark);
        query.bindValue(":an",measureCalibrator.an);
        query.bindValue(":bn",measureCalibrator.bn);
        query.bindValue(":cn",measureCalibrator.cn);
        query.bindValue(":delta_an",measureCalibrator.delta_an);
        query.bindValue(":delta_bn",measureCalibrator.delta_bn);
        query.bindValue(":delta_cn",measureCalibrator.delta_cn);
        query.bindValue(":measure_indication_value",measureCalibrator.measure_indication_value);
        query.bindValue(":standard_value_upper_limit",measureCalibrator.standard_value_upper_limit);
        query.bindValue(":accuracy_level",measureCalibrator.accuracy_level);
        query.bindValue(":create_time",currentDateTime);
        query.bindValue(":update_time",currentDateTime);
         bool isSuccess = query.exec();
         qDebug()<<"保存的示值为:"<<measureCalibrator.indicating_value;
         if (isSuccess) {
             QString sql = "INSERT INTO biz_business_device_measure_data_calibrator "
                          " (id,data_id,item_data_id,maximum_error_formula,error_param_a,error_param_b,params,capacity,unit,frequency,frequency_unit,"
                           "range_range,standard_value,indicating_value,maximum_error,absolute_error,resolution,line_mode,remark,an,bn,cn,delta_an,"
                           "delta_bn,delta_cn,measure_indication_value,standard_value_upper_limit,accuracy_level,create_time,update_time) "
                           " VALUES "
                          " (:1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13,:14,:15,:16,:17,:18,:19,:20,:21,:22,:23,:24,:25,:26,:27,:28,:29,:30);";
            saveLogToSql(sql,&measureCalibrator);
         }
         return isSuccess;
};
   // 核查程序管理首页查询
QList<CheckProgramManage> BaseCommonApi::getCheckProgramManage()
{
    QList<CheckProgramManage> result;
    QSqlQuery query;
    bool isSuccess = query.exec("SELECT id,check_name,belong_standard_equipment,create_name,remark FROM zd_verification_program_manage");
    if (isSuccess) {
        while (query.next()) {
            CheckProgramManage programInfo;
            programInfo.id = query.value("id").toString();
            programInfo.check_name = query.value("check_name").toString();
            programInfo.belong_standard_equipment = query.value("belong_standard_equipment").toString();
            programInfo.create_name = query.value("create_name").toString();
//            programInfo.create_time = query.value("create_time").toDateTime();
            programInfo.remark = query.value("remark").toString();
            result.append(programInfo);
        }
    } else {
        qDebug() << "Query execution failed: " << query.lastError().text();
    }
   return result;
};
//核查程序管理-编辑查询单个
CheckProgramManage BaseCommonApi::getCheckProgramManageById(QString id)
{
    CheckProgramManage result;
    QSqlQuery query;
   query.prepare("SELECT id,check_name,create_name,create_time,remark,img_path,standard_device_id,verification_documents_id,update_time   "
                                "FROM zd_verification_program_manage where id = :id ");
    query.bindValue(":id", id);
    if (query.exec()) {
        while (query.next()) {
            CheckProgramManage programInfo;
            programInfo.id = query.value("id").toString();
            programInfo.check_name = query.value("check_name").toString();
            programInfo.create_name = query.value("create_name").toString();
            programInfo.create_time = query.value("create_time").toDateTime();
            programInfo.remark = query.value("remark").toString();
            programInfo.img_path = query.value("img_path").toString();
            programInfo.standard_device_id = query.value("standard_device_id").toString();
            programInfo.verification_documents_id = query.value("verification_documents_id").toString();
            programInfo.update_time = query.value("update_time").toDateTime();
            result = programInfo;
        }
    } else {
        qDebug() << "Query execution failed: " << query.lastError().text();
    }
   return result;
};
    //核查程序管理-编辑查询 选择设备 选择标准
QList<CheckAndTestedDevice> BaseCommonApi::getCheckDeviceList()
{
    QList<CheckAndTestedDevice> result;
    QSqlQuery query;
    bool isSuccess = query.exec("SELECT bei.id ,bei.equipment_name ,bei.model ,bei.manufacture_no ,bei.manufacturer FROM biz_equipment_info bei ");
    if (isSuccess) {
        while (query.next()) {
            CheckAndTestedDevice device;
            device.id = query.value("id").toString();
            device.equipment_name = query.value("equipment_name").toString();
            device.model = query.value("model").toString();
            device.manufacture_no = query.value("manufacture_no").toString();
            device.manufacturer = query.value("manufacturer").toString();
            result.append(device);
        }
    } else {
        qDebug() << "Query execution failed: " << query.lastError().text();
    }
   return result;
};
//核查程序管理-编辑查询 选择设备 选择核查件 为标准和被检的并集
QList<CheckAndTestedDevice> BaseCommonApi::getCheckAndTestedDeviceList()
{
    QList<CheckAndTestedDevice> result;
    QSqlQuery query;
    bool isSuccess = query.exec("SELECT   "
                                " bei.id ,  bei.equipment_name ,   bei.model , bei.manufacture_no , bei.manufacturer "
                            " FROM    biz_equipment_info bei   UNION ALL  SELECT   "
                              "  eei.id ,   eei.equipment_name ,   eei.model ,   eei.manufacture_no ,  eei.manufacturer  "
                            " FROM     eqpt_equipment_info eei   LEFT JOIN   sys_dept ON sys_dept.ID = eei.dept_id;");
    if (isSuccess) {
        while (query.next()) {
            CheckAndTestedDevice device;
            device.id = query.value("id").toString();
            device.equipment_name = query.value("equipment_name").toString();
            device.model = query.value("model").toString();
            device.manufacture_no = query.value("manufacture_no").toString();
            device.manufacturer = query.value("manufacturer").toString();
            result.append(device);
        }
    } else {
        qDebug() << "Query execution failed: " << query.lastError().text();
    }
   return result;
};
    //核查程序管理-核查设置-多功能校准源  参数设备id  同信息管理-标准设备管理-核查项及核查点
QList<QStringList> BaseCommonApi::getVerificationItemsMultiList(QString equipment_id,QStringList *headList)
{
    QList<QStringList> resultData;
        QStringList result;
       QSqlQuery query;
       query.prepare("SELECT * FROM biz_equipment_standard_check_item_data_calibrator "
                     "WHERE equipment_id = :equipment_id");
        query.bindValue(":equipment_id", equipment_id);

        if (query.exec()) {
            while (query.next()) {
                result.clear();
                result.append( query.value("id").toString());
                result.append( query.value("item_category_id").toString());
                result.append( query.value("equipment_id").toString());
                result.append(  query.value("check_type").toString());
               result.append( query.value("test_type").toString());
                result.append( query.value("params").toString());
               result.append( query.value("unit").toString());
                result.append(  query.value("frequency").toString());
               result.append( query.value("check_point").toString());
                result.append(  query.value("resolution").toString());
                result.append(  query.value("cycle_number").toString());
               result.append(  query.value("frequency_unit").toString());
               result.append(  query.value("urel").toString());
               result.append(  query.value("thoroughfare").toString());
               result.append(  query.value("dccp").toString());
               result.append( query.value("flit").toString());
                result.append(  query.value("remark").toString());
               result.append(  query.value("create_time").toString());
                result.append( query.value("update_time").toString());
                resultData.append(result);
            }
        } else {
            qDebug() << "Query execution failed: " << query.lastError().text();
        }
        *headList <<"id"<<"核查项分类id"<<"配套设备id"<<"核查类型"<<"核查点类型"<<"核查项目"<<"单位"<<"频率"<<"分辨力"<<"核查点"
                 <<"频率单位"<<"循环次数"<<"Urel"<<"通道"<<"TFER"<<"DCCP"<<"FLIT"<<"核查项备注"<<"创建时间"<<"更新时间";
       return resultData;
};

//新增核查程序
bool BaseCommonApi::InsertCheckProgramManage(CheckProgramManage check)
{
    QSqlQuery query;
    query.prepare("INSERT INTO zd_verification_program_manage "
                 " (id,check_name,create_name,create_time,remark,img_path,standard_device_id,verification_documents_id,update_time) "
                 " VALUES (:id,:check_name,:create_name,:create_time,:remark,:img_path,:standard_device_id, "
                 " :verification_documents_id,:update_time)");
       QString formattedDateTime = check.create_time.toString("yyyy-MM-dd HH:mm:ss");
       query.bindValue(":id", check.id);
       query.bindValue(":check_name", check.check_name);
       query.bindValue(":create_name", check.create_name);
       query.bindValue(":create_time", formattedDateTime);
       query.bindValue(":remark", check.remark);
       query.bindValue(":img_path", check.img_path);
       query.bindValue(":standard_device_id", check.standard_device_id);
       query.bindValue(":verification_documents_id", check.verification_documents_id);
       query.bindValue(":update_time",formattedDateTime);

       bool isSuccess = query.exec();
       if (!isSuccess) {
           qDebug() << "InsertTaskBasic query failed: " << query.lastError().text();
       }

       return isSuccess;
};

//更新核查程序
bool BaseCommonApi::UpdateCheckProgramManage(CheckProgramManage check)
{
    QSqlQuery query;
       query.prepare("UPDATE zd_verification_program_manage SET check_name =:check_name,"
                             " create_name = :create_name, remark = :remark,  img_path =:img_path, standard_device_id =:standard_device_id,"
                             " verification_documents_id=:verification_documents_id, update_time=:update_time WHERE  id = :id;");
          QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
         query.bindValue(":check_name", check.check_name);
         query.bindValue(":create_name", check.create_name);
         query.bindValue(":remark", check.remark);
         query.bindValue(":img_path", check.img_path);
         query.bindValue(":standard_device_id", check.standard_device_id);
         query.bindValue(":verification_documents_id", check.verification_documents_id);
         query.bindValue(":update_time",currentDateTime);
         query.bindValue(":id", check.id);
         bool isSuccess = query.exec();
         if (!isSuccess) {
             qDebug() << "InsertOrderSampleRelation query failed: " << query.lastError().text();
         }
         return isSuccess;
};
//删除核查程序
bool BaseCommonApi::DeleteCheckProgramManage(QString id)
{
    QSqlQuery query;
       query.prepare("DELETE FROM zd_verification_program_manage WHERE id = :id");
         query.bindValue(":id", id);
         bool isSuccess = query.exec();
         if (!isSuccess) {
             qDebug() << "InsertOrderSampleRelation query failed: " << query.lastError().text();
         }
         return isSuccess;
};
//    自动核查-根据 设备id查询核查件设备信息
CheckAndTestedDevice BaseCommonApi::getCheckAndTestedDeviceById(QString deviceId)
{
    CheckAndTestedDevice result;
    QSqlQuery query;
       query.prepare("SELECT   bei.id ,   bei.equipment_name , bei.model ,   bei.manufacture_no ,"
                     " bei.manufacturer   FROM  biz_equipment_info bei WHERE bei.id = :deviceId "
                     " UNION ALL "
                     " SELECT  eei.id ,   eei.equipment_name ,  eei.model, eei.manufacture_no , eei.manufacturer  "
                     " FROM   eqpt_equipment_info eei LEFT JOIN  sys_dept ON sys_dept.ID = eei.dept_id WHERE eei.id = :deviceId");
         query.bindValue(":deviceId", deviceId);
         bool isSuccess = query.exec();
         if (isSuccess) {
             while (query.next()) {
                 CheckAndTestedDevice device;
                 device.id = query.value("id").toString();
                 device.equipment_name = query.value("equipment_name").toString();
                 device.model = query.value("model").toString();
                 device.manufacture_no = query.value("manufacture_no").toString();
                 device.manufacturer = query.value("manufacturer").toString();
                 result=device;
             }
         } else {
             qDebug() << "Query execution failed: " << query.lastError().text();
         }
        return result;
};
    //自动核查-结果保存-设备与装置-标准装置管理-核查数据管理0.02级活塞式压力计数据表
bool BaseCommonApi::InsertStandardCheckDatePistonGauge(StandardCheckDatePistonGauge gauge)
{
    QSqlQuery query;
    query.prepare("INSERT INTO biz_equipment_standard_check_data_piston_gauge "
                  " (id,data_id,unit,check_point,first_forward_stroke,first_reverse_stroke,second_forward_stroke,second_reverse_stroke,third_forward_stroke,third_reverse_stroke,average_value,"
                  "average_average_value,max_indicating_error,max_return_error,params,test_value_one,measure_value_one,test_value_two,measure_value_two,test_value_three,measure_value_three,"
                  "test_value_four,measure_value_four,test_value_five,measure_value_five,test_value_six,measure_value_six,maximum_error,create_time,update_time) "
                  " VALUES "
                  " (:id,:data_id,:unit,:check_point,:first_forward_stroke,:first_reverse_stroke,:second_forward_stroke,:second_reverse_stroke,:third_forward_stroke,:third_reverse_stroke,:average_value,:average_average_value,:max_indicating_error,:max_return_error,:params,:test_value_one,:measure_value_one,:test_value_two,:measure_value_two,:test_value_three,:measure_value_three,:test_value_four,:measure_value_four,:test_value_five,:measure_value_five,:test_value_six,:measure_value_six,:maximum_error,:create_time,:update_time) ");
    QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
    query.bindValue(":id",gauge.id);
    query.bindValue(":data_id",gauge.data_id);
    query.bindValue(":unit",gauge.unit);
    query.bindValue(":check_point",gauge.check_point);
    query.bindValue(":first_forward_stroke",gauge.first_forward_stroke);
    query.bindValue(":first_reverse_stroke",gauge.first_reverse_stroke);
    query.bindValue(":second_forward_stroke",gauge.second_forward_stroke);
    query.bindValue(":second_reverse_stroke",gauge.second_reverse_stroke);
    query.bindValue(":third_forward_stroke",gauge.third_forward_stroke);
    query.bindValue(":third_reverse_stroke",gauge.third_reverse_stroke);
    query.bindValue(":average_value",gauge.average_value);
    query.bindValue(":average_average_value",gauge.average_average_value);
    query.bindValue(":max_indicating_error",gauge.max_indicating_error);
    query.bindValue(":max_return_error",gauge.max_return_error);
    query.bindValue(":params",gauge.params);
    query.bindValue(":test_value_one",gauge.test_value_one);
    query.bindValue(":measure_value_one",gauge.measure_value_one);
    query.bindValue(":test_value_two",gauge.test_value_two);
    query.bindValue(":measure_value_two",gauge.measure_value_two);
    query.bindValue(":test_value_three",gauge.test_value_three);
    query.bindValue(":measure_value_three",gauge.measure_value_three);
    query.bindValue(":test_value_four",gauge.test_value_four);
    query.bindValue(":measure_value_four",gauge.measure_value_four);
    query.bindValue(":test_value_five",gauge.test_value_five);
    query.bindValue(":measure_value_five",gauge.measure_value_five);
    query.bindValue(":test_value_six",gauge.test_value_six);
    query.bindValue(":measure_value_six",gauge.measure_value_six);
    query.bindValue(":maximum_error",gauge.maximum_error);
    query.bindValue(":create_time",currentDateTime);
    query.bindValue(":update_time",currentDateTime);
    bool isSuccess = query.exec();
    if (!isSuccess) {
        qDebug() << "InsertTaskBasic query failed: " << query.lastError().text();
    }

    return isSuccess;

};
    //自动核查-结果保存-基本信息
bool BaseCommonApi::InsertCheckDataManageBasicInfo(CheckDataManageBasicInfo baseInfo)
{
    QSqlQuery query;
    query.prepare("INSERT INTO biz_equipment_standard_check_info "
                 "  (id,data_no,check_date,check_address,temperature,humidity,check_accord,stability_examine,standard_equipment_id"
                  ",equipment_id,item_category_id,conclusion,remark,create_user_id,create_user_name,create_time,update_time) "
                 "  VALUES "
                 "  (:id,:data_no,:check_date,:check_address,:temperature,:humidity,:check_accord,:stability_examine,:standard_equipment_id,"
                  ":equipment_id,:item_category_id,:conclusion,:remark,:create_user_id,:create_user_name,:create_time,:update_time) ");
    QString checkData = baseInfo.check_date.toString("yyyy-MM-dd");
    QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
      query.bindValue(":id",baseInfo.id);
      query.bindValue(":data_no",baseInfo.data_no);
      query.bindValue(":check_date",checkData);
      query.bindValue(":check_address",baseInfo.check_address);
      query.bindValue(":temperature",baseInfo.temperature);
      query.bindValue(":humidity",baseInfo.humidity);
      query.bindValue(":check_accord",baseInfo.check_accord);
      query.bindValue(":stability_examine",baseInfo.stability_examine);
      query.bindValue(":standard_equipment_id",baseInfo.standard_equipment_id);
      query.bindValue(":equipment_id",baseInfo.equipment_id);
      query.bindValue(":item_category_id",baseInfo.item_category_id);
      query.bindValue(":conclusion",baseInfo.conclusion);
      query.bindValue(":remark",baseInfo.remark);
      query.bindValue(":create_user_id",baseInfo.create_user_id);
      query.bindValue(":create_user_name",baseInfo.create_user_name);
      query.bindValue(":create_time",currentDateTime);
      query.bindValue(":update_time",currentDateTime);
      bool isSuccess = query.exec();
      if (!isSuccess) {
          qDebug() << "InsertTaskBasic query failed: " << query.lastError().text();
      }

      return isSuccess;
};
   //自动检定和自动核查 查询实验室及温湿度
QList<LocationInfo> BaseCommonApi::getLocationInfo()
{
      QList<LocationInfo>   result;
    QSqlQuery query;
       bool isSuccess =  query.exec("SELECT *  FROM env_location_info eli LEFT JOIN ( SELECT temperature, humidity, location_id AS  locationId "
                      "  FROM env_environment_record_data  ) ethd ON ethd.locationId = eli.id "
                      " ORDER BY update_time DESC");
       if (isSuccess) {
           while (query.next()) {
               LocationInfo info;
               info.id = query.value("id").toString();
               info.location_no = query.value("location_no").toString();
               info.location_name = query.value("location_name").toString();
               info.location_position = query.value("location_position").toString();
               info.create_user_id = query.value("create_user_id").toString();
               info.create_user = query.value("create_user").toString();
               info.create_time = query.value("create_time").toDateTime();
               info.update_time = query.value("update_time").toDateTime();
               info.location_lab = query.value("location_lab").toString();
               info.temperature = query.value("temperature").toString();
               info.humidity = query.value("humidity").toString();
               info.location_id = query.value("location_id").toString();
               result.append(info);
           }
       } else {
           qDebug() << "Query execution failed: " << query.lastError().text();
       }
      return result;
};
    //查询出所有实验室地点,用于自动检定/核查 结果保存 地点下拉框查询
QList<LocationInfo> BaseCommonApi::getLocationInfoList()
{
    QList<LocationInfo>   result;
  QSqlQuery query;
     bool isSuccess =  query.exec("SELECT *   FROM   env_location_info");
     if (isSuccess) {
         while (query.next()) {
             LocationInfo info;
             info.id = query.value("id").toString();
             info.location_no = query.value("location_no").toString();
             info.location_name = query.value("location_name").toString();
             info.location_position = query.value("location_position").toString();
             info.create_user_id = query.value("create_user_id").toString();
             info.create_user = query.value("create_user").toString();
             info.create_time = query.value("create_time").toDateTime();
             info.update_time = query.value("update_time").toDateTime();
             info.location_lab = query.value("location_lab").toString();
             result.append(info);
         }
     } else {
         qDebug() << "Query execution failed: " << query.lastError().text();
     }
    return result;
};
 //查询所有用户,用于自动检定/核查 结果保存
QList<User> BaseCommonApi::getUser()
{
    QList<User>   result;
  QSqlQuery query;
     bool isSuccess =  query.exec("SELECT * FROM sys_user");
     if (isSuccess) {
         while (query.next()) {
             User user;
             user.ID = query.value("ID").toString();
             user.NAME = query.value("NAME").toString();
             user.DEPT_ID = query.value("DEPT_ID").toString();

             result.append(user);
         }
     } else {
         qDebug() << "Query execution failed: " << query.lastError().text();
     }
    return result;
};
//    设备与装置-标准装置管理-核查数据基本信息关联的核查标准设备,即给设备做核查的设备
bool BaseCommonApi::InsertStandCheckInfoEquipent(StandCheckInfoEquipent equiment)
{
    QSqlQuery query;
    query.prepare("INSERT INTO biz_equipment_standard_check_info_equipment "
                  " (id,check_equipment_id,data_id) "
                  " VALUES "
                  " (:id,:check_equipment_id,:data_id)");
      query.bindValue(":id",equiment.id);
      query.bindValue(":check_equipment_id",equiment.check_equipment_id);
      query.bindValue(":data_id",equiment.data_id);
      bool isSuccess = query.exec();
      if (!isSuccess) {
          qDebug() << "InsertTaskBasic query failed: " << query.lastError().text();
      }

      return isSuccess;
};



//自动核查--结果保存-设备与装置-标准装置管理-核查数据管理多功能校准源数据表
bool BaseCommonApi::InsertStandCheckDataCalibrator(StandCheckDataCalibrator calibrator)
{
    QSqlQuery query;
    query.prepare("INSERT INTO biz_equipment_standard_check_data_calibrator "
                  "(id, data_id, check_type, test_type, params, unit, frequency, frequency_unit, check_point, "
                  "test_value_one_date, test_value_one, test_value_two_date, test_value_two, "
                  "test_value_three_date, test_value_three, test_value_four_date, test_value_four, "
                  "test_value_five_date, test_value_five, test_value_six_date, test_value_six, average_value, "
                  "standard_deviation, relative_repeatability, urel, less_than, qualified, create_time, update_time) "
                  "VALUES "
                  "(:id, :data_id, :check_type, :test_type, :params, :unit, :frequency, :frequency_unit, :check_point, "
                  ":test_value_one_date, :test_value_one, :test_value_two_date, :test_value_two, "
                  ":test_value_three_date, :test_value_three, :test_value_four_date, :test_value_four, "
                  ":test_value_five_date, :test_value_five, :test_value_six_date, :test_value_six, :average_value, "
                  ":standard_deviation, :relative_repeatability, :urel, :less_than, :qualified, :create_time, :update_time)");
    QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
    // 绑定所有值
    query.bindValue(":id", calibrator.id);
    query.bindValue(":data_id", calibrator.data_id);
    query.bindValue(":check_type", calibrator.check_type);
    query.bindValue(":test_type", calibrator.test_type);
    query.bindValue(":params", calibrator.params);
    query.bindValue(":unit", calibrator.unit);
    query.bindValue(":frequency", calibrator.frequency);
    query.bindValue(":frequency_unit", calibrator.frequency_unit);
    query.bindValue(":check_point", calibrator.check_point);
    query.bindValue(":test_value_one_date", calibrator.test_value_one_date.toString("yyyy-MM-dd"));
    query.bindValue(":test_value_one", calibrator.test_value_one);
    query.bindValue(":test_value_two_date", calibrator.test_value_two_date.toString("yyyy-MM-dd"));
    query.bindValue(":test_value_two", calibrator.test_value_two);
    query.bindValue(":test_value_three_date", calibrator.test_value_three_date.toString("yyyy-MM-dd"));
    query.bindValue(":test_value_three", calibrator.test_value_three);
    query.bindValue(":test_value_four_date", calibrator.test_value_four_date.toString("yyyy-MM-dd"));
    query.bindValue(":test_value_four", calibrator.test_value_four);
    query.bindValue(":test_value_five_date", calibrator.test_value_five_date.toString("yyyy-MM-dd"));
    query.bindValue(":test_value_five", calibrator.test_value_five);
    query.bindValue(":test_value_six_date", calibrator.test_value_six_date.toString("yyyy-MM-dd"));
    query.bindValue(":test_value_six", calibrator.test_value_six);
    query.bindValue(":average_value", calibrator.average_value);
    query.bindValue(":standard_deviation", calibrator.standard_deviation);
    query.bindValue(":relative_repeatability", calibrator.relative_repeatability);
    query.bindValue(":urel", calibrator.urel);
    query.bindValue(":less_than", calibrator.less_than);
    query.bindValue(":qualified", calibrator.qualified);
    query.bindValue(":create_time", currentDateTime);
    query.bindValue(":update_time", currentDateTime);
    bool isSuccess = query.exec();
    if (!isSuccess) {
        qDebug() << "InsertTaskBasic query failed: " << query.lastError().text();
    }

    return isSuccess;
};
//根据用户ID查询 当前部门ID和部门名称全程
QList<Dept> BaseCommonApi::SelectDeptData(QString UserId)
{
    UserId=temporary_user_id;
    QList<Dept> result;
    QSqlQuery query;
     bool isSuccess=query.exec(QString("SELECT dept.ID,dept.FULL_NAME FROM sys_dept as "
                               "dept WHERE dept.CREATE_USER=%1").arg(UserId));
     if (isSuccess) {
         while (query.next()) {
             Dept info;
             info.id = query.value("id").toString();
             info.FULL_NAME = query.value("FULL_NAME").toString();
             result.append(info);
         }
     } else {
         qDebug() << "Query execution failed: " << query.lastError().text();
     }
    return result;
};
//查询出所有委托方
QList<biz_resource_customer_info> BaseCommonApi::SelectCustomerData()
{
    QList<biz_resource_customer_info> result;
    QSqlQuery query;
     bool isSuccess=query.exec("SELECT * FROM biz_resource_customer_info");
     if (isSuccess) {
         while (query.next()) {
             biz_resource_customer_info info;
             info.id = query.value("id").toString();
             info.customer_name = query.value("customer_name").toString();
             result.append(info);
         }
     } else {
         qDebug() << "Query execution failed: " << query.lastError().text();
     }
    return result;
};
//计量检定业务-受检设备检定管理-检定数据管理检定数据历史修改记录[新增]
bool BaseCommonApi::InsertModifyRecord(MeasureModifyRecord record)
{
    QSqlQuery query;
    query.prepare("INSERT INTO biz_business_device_measure_modify_record "
                  " (id, data_id,source_system, modify_content,   create_user_id,  create_user_name,   create_time,update_time ) "
                  " VALUES (:id,  :data_id,  :source_system,  :modify_content,  :create_user_id,  :create_user_name,  :create_time,  :update_time  )");
    QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
    // 绑定所有值
    query.bindValue(":id", record.id);
    query.bindValue(":data_id", record.data_id);
    query.bindValue(":source_system", record.source_system);
    query.bindValue(":modify_content", record.modify_content);
    query.bindValue(":create_user_id", record.create_user_id);
    query.bindValue(":create_user_name", record.create_user_name);
    query.bindValue(":create_time",currentDateTime);
    query.bindValue(":update_time", currentDateTime);
    bool isSuccess = query.exec();
    if (!isSuccess) {
       QString ssql ="INSERT INTO biz_business_device_measure_modify_record "
                                        " (id, data_id,source_system, modify_content,   create_user_id,  create_user_name,   create_time,update_time ) "
                                        " VALUES (:1,  :2,  :3,  :4,  :5,  :6,  :7,  :8  )";
       saveLogToSql(ssql,&record);
    }else {
 qDebug() << "Insert query failed: " << query.lastError().text();
}

    return isSuccess;
};
//计量检定业务-受检设备检定管理-检定数据管理检定数据历史修改记录[查询]  参数 检定数据管理基础信息表id
QList<MeasureModifyRecord> BaseCommonApi::getModifyRecord(QString data_id)
{
    QList<MeasureModifyRecord> result;
    QSqlQuery query;
     query.prepare("SELECT * FROM biz_business_device_measure_modify_record WHERE data_id = :data_id ");
     query.bindValue(":data_id",data_id);
     if (query.exec()) {
         while (query.next()) {
             MeasureModifyRecord record;
             record.id = query.value("id").toString();
             record.data_id = query.value("data_id").toString();
             record.source_system = query.value("source_system").toString();
             record.modify_content = query.value("modify_content").toString();
             record.create_user_id = query.value("create_user_id").toString();
             record.create_user_name = query.value("create_user_name").toString();
             record.create_time = query.value("create_time").toDateTime();
             record.update_time = query.value("update_time").toDateTime();
             result.append(record);
         }
     } else {
         qDebug() << "Query execution failed: " << query.lastError().text();
     }
    return result;
};
//设备与装置-标准装置管理-核查数据管理核查数据历史修改记录
bool BaseCommonApi::InsertCheckModifyRecord(MeasureModifyRecord record)
{
    QSqlQuery query;
    query.prepare("INSERT INTO biz_equipment_standard_check_modify_record "
                  " (id, data_id,source_system, modify_content,   create_user_id,  create_user_name,   create_time,update_time ) "
                  " VALUES (:id,  :data_id,  :source_system,  :modify_content,  :create_user_id,  :create_user_name,  :create_time,  :update_time  )");
    QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
    // 绑定所有值
    query.bindValue(":id", record.id);
    query.bindValue(":data_id", record.data_id);
    query.bindValue(":source_system", record.source_system);
    query.bindValue(":modify_content", record.modify_content);
    query.bindValue(":create_user_id", record.create_user_id);
    query.bindValue(":create_user_name", record.create_user_name);
    query.bindValue(":create_time",currentDateTime);
    query.bindValue(":update_time", currentDateTime);
    bool isSuccess = query.exec();
    if (!isSuccess) {
        qDebug() << "Insert query failed: " << query.lastError().text();
    }

    return isSuccess;
};

//设备与装置-标准装置管理-核查数据管理核查数据历史修改记录[查询] 参数 检定数据管理基础信息表id
QList<MeasureModifyRecord> BaseCommonApi::getMeasureModifyRecord(QString data_id)
{
    QList<MeasureModifyRecord> result;
    QSqlQuery query;
     query.prepare("SELECT * FROM biz_equipment_standard_check_modify_record WHERE data_id = :data_id ");
     query.bindValue(":data_id",data_id);
     if (query.exec()) {
         while (query.next()) {
             MeasureModifyRecord record;
             record.id = query.value("id").toString();
             record.data_id = query.value("data_id").toString();
             record.source_system = query.value("source_system").toString();
             record.modify_content = query.value("modify_content").toString();
             record.create_user_id = query.value("create_user_id").toString();
             record.create_user_name = query.value("create_user_name").toString();
             record.create_time = query.value("create_time").toDateTime();
             record.update_time = query.value("update_time").toDateTime();
             result.append(record);
         }
     } else {
         qDebug() << "Query execution failed: " << query.lastError().text();
     }
    return result;
};

//保存log信息
//log文件
 bool BaseCommonApi::SaveLogInfo(int pathIndex,QString Info)
{
     // 获取应用程序的根目录
     QString path = QCoreApplication::applicationDirPath();
     //QString path ="C:\\AutoVerScheme";
     switch (pathIndex) {
        case 0:
         path+="\\File\\log\\sync_info.txt";
         break;
        case 1:
         path+="\\File\\log\\textlog.txt";
         break;
     }
     QByteArray utf8Dat;
     QString Message=Info;
     QFile file(path);
     // 如果目录不存在,则创建目录
     // 获取文件所在的目录
     QDir logDir = QDir(QFileInfo(path).absolutePath());
     if (!logDir.exists()) {
         if (!logDir.mkpath(".")) {
             qDebug() << "Failed to create log directory:" << logDir.absolutePath();
             return false;
         }
     }

     if (!file.open(QIODevice::Append | QIODevice::Text)) {
         qDebug() << "无法打开文件:" << file.errorString();
         QString str=file.errorString();
         return false;
     }
     QTextStream out(&file);
     utf8Dat = Message.toUtf8();
     out << QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")
         << "\t" << utf8Dat << "\n";
     file.close();
     return true;
 };


//新增日志表数据
bool BaseCommonApi::InsertzdLog(zdLog log)
{
    log.userid=temporary_user_id;
    QSqlQuery query;
    query.prepare("INSERT INTO zd_log(id,is_sync,sync_time,remark,userid,type,create_time,update_time) "
                  " VALUES(:id,:is_sync,:sync_time,:remark,:userid,:type,:create_time,:update_time) ");
    QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
    // 绑定所有值
    query.bindValue(":id", log.id);
    query.bindValue(":is_sync", log.is_sync);
    query.bindValue(":sync_time", log.sync_time.toString("yyyy-MM-dd HH:mm:ss"));
    query.bindValue(":remark", log.remark);
    query.bindValue(":userid", log.userid);
    query.bindValue(":type", log.type);
    query.bindValue(":create_time",currentDateTime);
    query.bindValue(":update_time", currentDateTime);
    bool isSuccess = query.exec();
    if (!isSuccess) {
        qDebug() << "Insert query failed: " << query.lastError().text();
    }

    return isSuccess;
};
//根据userid查询日志表数据
QList<zdLog> BaseCommonApi::getzdLogByuserId(QString userid)
{
    userid=temporary_user_id;
    QList<zdLog> result;
    QSqlQuery query;
     query.prepare("SELECT * FROM zd_log WHERE userid = :userid ");
     query.bindValue(":userid",userid);
     if (query.exec()) {
         while (query.next()) {
             zdLog log;
             log.id = query.value("id").toString();
             log.is_sync = query.value("is_sync").toString();
             log.sync_time = query.value("sync_time").toDateTime();
             log.remark = query.value("remark").toString();
             log.type = query.value("type").toString();
             log.create_time = query.value("create_time").toDateTime();
             log.update_time = query.value("update_time").toDateTime();
             result.append(log);
         }
     } else {
         qDebug() << "Query execution failed: " << query.lastError().text();
     }
    return result;
};
//新增数据同步表
bool BaseCommonApi::InsertzdDataSync(zdDataSync data)
{
    data.userid=temporary_user_id;
    QSqlQuery query;
    query.prepare("INSERT INTO zd_data_sync(id,type,ssql,userid,remark,create_time,update_time,log_sync_id,sync_type) "
                  " VALUES "
                  " (:id,:type,:ssql,:userid,:remark,:create_time,:update_time,:log_sync_id,:sync_type) ");
    QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
    // 绑定所有值
    query.bindValue(":id", data.id);
    query.bindValue(":type", data.type);
    query.bindValue(":ssql", data.ssql);
    query.bindValue(":remark", data.remark);
    query.bindValue(":userid", data.userid);
    query.bindValue(":log_sync_id", data.log_sync_id);
    query.bindValue(":sync_type", data.sync_type);
    query.bindValue(":create_time",currentDateTime);
    query.bindValue(":update_time", currentDateTime);
    bool isSuccess = query.exec();
    if (!isSuccess) {
        qDebug() << "Insert query failed: " << query.lastError().text();
    }

    return isSuccess;
};
//根据userid查询数据同步表
QList<zdDataSync> BaseCommonApi::getzdDataSyncByuserId(QString log_sync_id)
{
    QList<zdDataSync> result;
    QSqlQuery query;
     query.prepare("SELECT * FROM zd_data_sync WHERE log_sync_id= :log_sync_id ");
     query.bindValue(":log_sync_id",log_sync_id);
     if (query.exec()) {
         while (query.next()) {
             zdDataSync data;
             data.id = query.value("id").toString();
             data.type = query.value("type").toString();
             data.ssql = query.value("ssql").toString();
             data.remark = query.value("remark").toString();
             data.userid = query.value("userid").toString();
             data.log_sync_id = query.value("log_sync_id").toString();
             data.sync_type = query.value("sync_type").toString();
             data.create_time = query.value("create_time").toDateTime();
             data.update_time = query.value("update_time").toDateTime();
             result.append(data);
         }
     } else {
         qDebug() << "Query execution failed: " << query.lastError().text();
     }
    return result;
};


//【查询】检定项0.02活塞式压力计数据(包含字典的字段都存为字典value)
QMap<QString, QList<QStringList>> BaseCommonApi::getDeviceMeasureCalibratorPistonGauge(QString itemCatoryName,QString itemId,QMap<QString, QStringList> *headList)
{
    QMap<QString, QList<QStringList>> DataMapList;
    QList<QStringList> resultData;
    QStringList result;
    resultData.clear();

    QSqlQuery query;
     query.prepare("SELECT bbdmidpg.*,bbdmii.appearance_function_check,bbdmicp.indication_error,bbdmicp.measure_medium, "
                   " bbdmicp.division,bbdmicp.deviation_and_switching,bbdmicp.display_value_one,bbdmicp.display_value_two,bbdmicp.display_value_three, "
                   " bbdmicp.insulation_resistance,bbdmicp.appearance,bbdmicp.tightness,bbdmicp.pointer_deflection_stability,"
                   "bbdmidpg.create_time,bbdmidpg.update_time "
                   " FROM biz_business_device_measure_item_data_piston_gauge bbdmidpg "
                   " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidpg.item_id "
                   " JOIN biz_business_device_measure_item_config_piston_gauge bbdmicp ON bbdmicp.item_id = bbdmidpg.item_id "
                   " WHERE bbdmidpg.item_id =   :itemId ORDER BY bbdmidpg.indicating_value");
     // 将参数绑定到占位符
      query.bindValue(":itemId", itemId);
      if (query.exec()) {
          while (query.next()) {
              result.clear();
              result.append(query.value("id").toString());
              result.append(query.value("item_id").toString());  //检定项目ID
              result.append(query.value("indicating_value").toString());//标准器示值
              result.append(query.value("return_error").toString());//回程误差允许值
              result.append(query.value("friction_error").toString());//轻敲位移允许值
              result.append(query.value("indicating_error").toString());//示值误差允许值
              result.append(query.value("zero_position").toString());//零位是否带止销
              result.append(query.value("measure_medium").toString());//检定介质(字典value)
              result.append(query.value("accuracy_class").toString());//准确度等级
              result.append(query.value("maximum_error").toString());//最大允许误差
              result.append(query.value("theoretical_output_value").toString());//理论输出值
              result.append(query.value("theoretical_output_value_unit").toString());//理论输出值单位
              result.append(query.value("appearance_function_check").toString());//外观及功能性检查(1/0)
              result.append(query.value("indication_error").toString());//示值误差、回程误差、轻敲位移
              result.append(query.value("measure_medium").toString());//检定介质(字典value)
              result.append(query.value("division").toString());//分度值的五分之一
              result.append(query.value("deviation_and_switching").toString());//设定点偏差及切换差
              result.append(query.value("display_value_one").toString());//设定标准器示值1
              result.append(query.value("display_value_two").toString());//设定标准器示值2
              result.append(query.value("display_value_three").toString());//设定标准器示值3
              result.append(query.value("insulation_resistance").toString());//绝缘电阻
              result.append(query.value("appearance").toString());//外观
              result.append(query.value("tightness").toString());//密封性
              result.append(query.value("pointer_deflection_stability").toString());//指针偏转平稳性
              result.append(query.value("create_time").toString());
              result.append(query.value("update_time").toString());
              resultData.append(result);
          }
      } else {
          qDebug() << "Query execution failed: " << query.lastError().text();
      }

//        *headList <<"序号"<<"检定项id"<<"标准器示值"<<"回程误差允许值"<<"轻敲位移允许值"<<"示值误差允许值"<<"零位是否带止销"
//                 <<"检定介质"<<"准确度等级"<<"最大允许误差"<<"理论输出值"<<"理论输出值单位"<<"外观及功能性检查(1/0)"<<"示值误差、回程误差、轻敲位移"
//                <<"检定介质(字典value)"<<"分度值的五分之一"<<"创建时间"<<"更新时间";
      //进行检定项目列头转换
      DataMapList= GetDataReturnItemListByPistonGauge(itemCatoryName,resultData,DataMapList,headList);
      return DataMapList;
};
//0.02压力表头
QMap<QString, QList<QStringList>> BaseCommonApi::GetDataReturnItemListByPistonGauge(QString itemCatoryName,QList<QStringList> ResultData,QMap<QString, QList<QStringList>> DataMapList,QMap<QString, QStringList> *HeadMapList)
{
       QList<QStringList> IndicationErrorList;
       if(itemCatoryName.contains("一般压力表")){
       for(const QStringList &row : ResultData)
       {
          QString VerificationItem=NULL;
           if (!row.isEmpty() && row[13] =="1") {
                   VerificationItem = "示值误差/回程误差/轻敲位移";
                   //添加列头
                   QStringList head;
                   head  <<"序号"<<"标准器示值"<<"轻敲前示值-正"<<"轻敲前示值-反"<<"轻敲后示值-正"
                        <<"轻敲后示值-反"<<"轻敲前后变动量-正"<<"轻敲前后变动量-反" ;
                   HeadMapList->insert(VerificationItem,head);
                   //添加数据
                   QStringList Data;
//                   Data.append(row[12]);  //外观及功能性检查
//                   Data.append(row[13]);  //示值误差、回程误差、轻敲位移
//                   Data.append(row[11]);  //理论输出值单位
//                   Data.append(row[14]);  //检定介质
//                   Data.append(row[15]);  //分度值的五分之一
                   Data.append(row[0]);  //ID
                   Data.append(row[2]);  //标准器示值
                   Data.append(row[2]);//轻敲前示值-正
                   Data.append(row[2]);//"轻敲前示值-反"
                   Data.append(row[2]);//轻敲后示值-正
                   Data.append(row[2]);//轻敲后示值-反
                   Data.append("0");//轻敲前后变动量-正
                   Data.append("0");//轻敲前后变动量-反
                   IndicationErrorList.append(Data);
            }

        }
    }
       if(IndicationErrorList.count()!=0){
           DataMapList.insert("示值误差/回程误差/轻敲位移",IndicationErrorList);
       };
       return  DataMapList;
};
   //一般压力表  查询生成结果处理界面的头和数据
QMap<QString, QList<QStringList>> BaseCommonApi::getDeviceMeasureCalibratorPistonGaugeGenerate(QString itemCatoryName,QString itemId,QMap<QString, QStringList> *headList)
{
    QMap<QString, QList<QStringList>> DataMapList;
    QList<QStringList> resultData;
    QStringList result;
    resultData.clear();

    QSqlQuery query;
     query.prepare("SELECT bbdmidpg.*,bbdmii.appearance_function_check,bbdmicp.indication_error,bbdmicp.measure_medium, "
                   " bbdmicp.division,bbdmicp.deviation_and_switching,bbdmicp.display_value_one,bbdmicp.display_value_two,bbdmicp.display_value_three, "
                   " bbdmicp.insulation_resistance,bbdmicp.appearance,bbdmicp.tightness,bbdmicp.pointer_deflection_stability,"
                   " bbdmicp.accuracy_level_lower,bbdmicp.accuracy_level_upper"
                   " FROM biz_business_device_measure_item_data_piston_gauge bbdmidpg "
                   " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidpg.item_id "
                   " JOIN biz_business_device_measure_item_config_piston_gauge bbdmicp ON bbdmicp.item_id = bbdmidpg.item_id "
                   " WHERE bbdmidpg.item_id =   :itemId ORDER BY bbdmidpg.update_time DESC");
     // 将参数绑定到占位符
      query.bindValue(":itemId", itemId);
      if (query.exec()) {
          while (query.next()) {
              result.clear();
              result.append(query.value("id").toString());
              result.append(query.value("item_id").toString());  //检定项目ID
              result.append(query.value("indicating_value").toString());//标准ji器示值
              result.append(query.value("return_error").toString());//回程误差允许值
              result.append(query.value("friction_error").toString());//轻敲位移允许值
              result.append(query.value("indicating_error").toString());//示值误差允许值
              result.append(query.value("zero_position").toString());//零位是否带止销
              result.append(query.value("measure_medium").toString());//检定介质(字典value)
              result.append(query.value("accuracy_class").toString());//准确度等级
              result.append(query.value("maximum_error").toString());//最大允许误差
              result.append(query.value("theoretical_output_value").toString());//理论输出值
              result.append(query.value("theoretical_output_value_unit").toString());//理论输出值单位
              result.append(query.value("appearance_function_check").toString());//外观及功能性检查(1/0)
              result.append(query.value("indication_error").toString());//示值误差、回程误差、轻敲位移
              result.append(query.value("measure_medium").toString());//检定介质(字典value)
              result.append(query.value("division").toString());//分度值的五分之一
              result.append(query.value("deviation_and_switching").toString());//设定点偏差及切换差
              result.append(query.value("display_value_one").toString());//设定标准器示值1
              result.append(query.value("display_value_two").toString());//设定标准器示值2
              result.append(query.value("display_value_three").toString());//设定标准器示值3
              result.append(query.value("insulation_resistance").toString());//绝缘电阻
              result.append(query.value("appearance").toString());//外观
              result.append(query.value("tightness").toString());//密封性
              result.append(query.value("pointer_deflection_stability").toString());//指针偏转平稳性
              result.append(query.value("accuracy_level_lower").toString());//准确度等级(量程上限90%以下)
              result.append(query.value("accuracy_level_upper").toString());//准确度等级(量程上限90%以上)
              result.append(query.value("create_time").toString());
              result.append(query.value("update_time").toString());
              resultData.append(result);
          }
      } else {
          qDebug() << "Query execution failed: " << query.lastError().text();
      }

//        *headList <<"序号"<<"检定项id"<<"标准器示值"<<"回程误差允许值"<<"轻敲位移允许值"<<"示值误差允许值"<<"零位是否带止销"
//                 <<"检定介质"<<"准确度等级"<<"最大允许误差"<<"理论输出值"<<"理论输出值单位"<<"外观及功能性检查(1/0)"<<"示值误差、回程误差、轻敲位移"
//                <<"检定介质(字典value)"<<"分度值的五分之一"<<"创建时间"<<"更新时间";
      //进行检定项目列头转换
      DataMapList= GetDataReturnItemListByPistonGaugeResult(itemCatoryName,resultData,DataMapList,headList);
      return DataMapList;
};

QMap<QString, QList<QStringList>> BaseCommonApi::GetDataReturnItemListByPistonGaugeResult(QString itemCatoryName,QList<QStringList> ResultData,QMap<QString, QList<QStringList>> DataMapList,QMap<QString, QStringList> *HeadMapList)
{
    QList<QStringList> IndicationErrorList;
        if(itemCatoryName.contains("一般压力表")){
        for(const QStringList &row : ResultData)
        {
           QString VerificationItem=NULL;
            if (!row.isEmpty()) {
                    VerificationItem = "项目";
                    //添加列头
                    QStringList head;
                    head  <<"项目-量程上限90%以下"<<"项目-量程上限90%以上"<<"示值误差允许值"<<"示值误差最大值"<<"轻敲位移允许值"<<"轻敲位移最大值"
                         <<"回程误差允许值"<<"回程误差最大值";
                    HeadMapList->insert(VerificationItem,head);
                    //添加数据
                    QStringList Data;
                    Data.append(row[24]);  //量程上限90%以下
                    Data.append(row[25]);  //量程上限90%及以上
                    Data.append(row[5]);//示值误差允许值
                    Data.append("");//示值误差最大值
                    Data.append(row[4]);//轻敲位移允许值
                    Data.append("");//轻敲位移最大值
                    Data.append(row[3]);//回程误差允许值
                    Data.append("");//回程误差最大值
//                    Data.append("");//结果
//                    Data.append("");//输出备注
                    IndicationErrorList.append(Data);
             }
         }
     }
        if(IndicationErrorList.count()!=0){
            DataMapList.insert("项目",IndicationErrorList);
        };
        return  DataMapList;
}
//根据设备id查询 不同头数据
QList<QStringList> BaseCommonApi::searchStatus(QString deviceId)
{
    QList<QStringList> result;
    QList<JudgeCalibrationTable> tableList = getJudgeCalibrationTable(deviceId);
    QString itemId = tableList[0].id;
    QString belongStandardEquipment = tableList[0].belong_standard_equipment;
    switch (belongStandardEquipment.toInt()) {
    case 1:
        break;
    case 2:
        break;
    case 4:
       result =  getDeviceMeasureCalibratorPistonGaugeBystatus(itemId);
        break;
    }
    return result;
}


//测试界面 外观及功能性检查和检定数据头
QList<QStringList> BaseCommonApi::getDeviceMeasureCalibratorPistonGaugeBystatus(QString itemId)
{
    QList<QStringList> result;
    QSqlQuery query;
    QStringList strList;
     query.prepare("SELECT bbdmii.appearance_function_check,bbdmicp.appearance,bbdmicp.tightness,bbdmicp.insulation_resistance,"
                   " bbdmicp.zero_drift,bbdmicp.range_unit,bbdmidpg.measure_medium "
                  "  ,bbdmicp.division FROM biz_business_device_measure_item_data_piston_gauge bbdmidpg "
                  " JOIN biz_business_device_measure_item_config_piston_gauge bbdmicp ON bbdmicp.item_id = bbdmidpg.item_id "
                  " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidpg.item_id"
                  " WHERE bbdmidpg.item_id = :itemId LIMIT 1");
     // 将参数绑定到占位符  1763116518209597442
      query.bindValue(":itemId", itemId);
      if (query.exec()) {
          while (query.next()) {
              strList.append(query.value("appearance_function_check").toString());//外观及功能性检查(1/0)
              strList.append(query.value("appearance").toString());//外观
              strList.append(query.value("tightness").toString());//密封性
              strList.append(query.value("insulation_resistance").toString());//绝缘电阻
              strList.append(query.value("zero_drift").toString());//零位飘移
              strList.append(query.value("pointer_deflection_stability").toString());//指针偏转平稳性
              strList.append(query.value("range_unit").toString());//单位
              strList.append(query.value("measure_medium").toString());//检定介质(字典value)
              strList.append(query.value("division").toString());//分度值的五分之一
//              result.appearance_function_check = query.value("appearance_function_check").toString();
//              result.appearance = query.value("appearance").toString();
//              result.tightness= query.value("tightness").toString();
//              result.insulation_resistance= query.value("insulation_resistance").toString();
//              result.pointer_deflection_stability = query.value("pointer_deflection_stability").toString();
//              result.zero_drift = query.value("zero_drift").toString();
//              result.measure_medium = query.value("measure_medium").toString();
//              result.division = query.value("division").toString();
          }
          result.append(strList);
      } else {
          qDebug() << "Query execution failed: " << query.lastError().text();
      }
      return result;
}


//自动检定数据结果保存 参数1:装置字典1,2,3 参数2:BaseClass父类, 子类赋值
bool BaseCommonApi::SearchSelectTable(QString id, BaseClass *object) {
    bool result = false; // 初始化为 false 或根据需要初始化为其他值
    switch (id.toInt()) {
    case 1: {
     //多功能校准源
        SaveDeviceMeasureCalibrator *recordCal = dynamic_cast<SaveDeviceMeasureCalibrator *>(object);
        if (recordCal != nullptr) {
            result = BaseCommonApi::InsertVerMultiCal(*recordCal); // 注意这里使用recordCal而不是recordGauge
        } else {
            // 处理转换失败的情况
            result = false;
        }
        break;
    }
    case 2: {
        //直流稳压电源
           bizBusinessDeviceMeasureDataDcPower *dcPower = dynamic_cast<bizBusinessDeviceMeasureDataDcPower *>(object);
           if (dcPower != nullptr) {
               result = BaseCommonApi::InsertbizBusinessDeviceMeasureDataDcPower(*dcPower);
           } else {
               // 处理转换失败的情况
               result = false;
           }
           break;
       }
    case 4: {
           //0.02压力活塞计
           DeviceMeasureDataPistonGauge *recordGauge = dynamic_cast<DeviceMeasureDataPistonGauge *>(object);
           if (recordGauge != nullptr) {
               result = BaseCommonApi::InsertDeviceMeasureDataPistonGauge(*recordGauge);
           } else {
               // 处理转换失败的情况
               result = false;
           }
           break;
       }
    case 5: {
           //二等铂电阻
           DeviceMeasureDataResistanceThermometer *thermometer = dynamic_cast<DeviceMeasureDataResistanceThermometer *>(object);
           if (thermometer != nullptr) {
               result = BaseCommonApi::InsertDeviceMeasureDataResistanceThermometer(*thermometer);
           } else {
               // 处理转换失败的情况
               result = false;
           }
           break;
       }
    case 9: {
           //频谱
           DeviceMeasureDataSpectrumAnalyzer *analyzer = dynamic_cast<DeviceMeasureDataSpectrumAnalyzer *>(object);
           if (analyzer != nullptr) {
               result = BaseCommonApi::InsertDeviceMeasureDataSpectrumAnalyzer(*analyzer);
           } else {
               // 处理转换失败的情况
               result = false;
           }
           break;
       }
    case 10: {
           //信号
           DeviceMeasureDataSignalGenerator *generator = dynamic_cast<DeviceMeasureDataSignalGenerator *>(object);
           if (generator != nullptr) {
               result = BaseCommonApi::InsertDeviceMeasureDataSignalGenerator(*generator);
           } else {
               // 处理转换失败的情况
               result = false;
           }
           break;
       }
    case 13: {
           //示波器
           DeviceOscilloscopeCalibration *recordGauge = dynamic_cast<DeviceOscilloscopeCalibration *>(object);
           if (recordGauge != nullptr) {
               result = BaseCommonApi::InsertDeviceOscilloscopeCalibration(*recordGauge);
           } else {
               // 处理转换失败的情况
               result = false;
           }
           break;
       }
       // 可能还有其他的case
       default:
           result = false;
           break;

    }

    return result; // 返回结果
};
 //【结果保存】压力
bool BaseCommonApi::InsertDeviceMeasureDataPistonGauge(DeviceMeasureDataPistonGauge gauge)
{
    QSqlQuery query;
            query.prepare("INSERT INTO biz_business_device_measure_data_piston_gauge "
                          "(id, data_id, data_type, data_category, indicating_value, "
                          "before_friction_forward_stroke, before_friction_reverse_stroke, "
                          "after_friction_forward_stroke, after_friction_reverse_stroke, "
                          "variation_forward_stroke, variation_reverse_stroke, "
                          "theoretical_output_value, first_forward_stroke, first_reverse_stroke, "
                          "second_forward_stroke, second_reverse_stroke, third_forward_stroke, "
                          "third_reverse_stroke, indicating_error, return_error, average_forward_stroke, "
                          "average_reverse_stroke, average_value, average_return_error, item, "
                          "max_indicating_error, max_return_error, max_friction_error, maximum_error_absolute, "
                          "forward_stroke_switch_value, reverse_stroke_switch_value, point_deviation, "
                          "different_gap, max_point_deviation, allow_point_deviation, max_different_gap, "
                          "allow_different_gap, zero_drift_one, zero_drift_two, zero_drift_three, "
                          "zero_drift_four, zero_drift_five, intercept_a, slope_b, sensitivity_b, "
                          "repeatability_r, hysteresis_h, linear_l, basic_error_a, periodic_stability_s_b, "
                          "create_time, update_time) "
                          "VALUES (:id, :data_id, :data_type, :data_category, :indicating_value, "
                          ":before_friction_forward_stroke, :before_friction_reverse_stroke, "
                          ":after_friction_forward_stroke, :after_friction_reverse_stroke, "
                          ":variation_forward_stroke, :variation_reverse_stroke, "
                          ":theoretical_output_value, :first_forward_stroke, :first_reverse_stroke, "
                          ":second_forward_stroke, :second_reverse_stroke, :third_forward_stroke, "
                          ":third_reverse_stroke, :indicating_error, :return_error, :average_forward_stroke, "
                          ":average_reverse_stroke, :average_value, :average_return_error, :item, "
                          ":max_indicating_error, :max_return_error, :max_friction_error, :maximum_error_absolute, "
                          ":forward_stroke_switch_value, :reverse_stroke_switch_value, :point_deviation, "
                          ":different_gap, :max_point_deviation, :allow_point_deviation, :max_different_gap, "
                          ":allow_different_gap, :zero_drift_one, :zero_drift_two, :zero_drift_three, "
                          ":zero_drift_four, :zero_drift_five, :intercept_a, :slope_b, :sensitivity_b, "
                          ":repeatability_r, :hysteresis_h, :linear_l, :basic_error_a, :periodic_stability_s_b, "
                          ":create_time, :update_time)");

   ////       QString formattedUpdateDateTime = measureCalibrator.create_time.toString("yyyy-MM-dd HH:mm:ss");
           QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
            query.bindValue(":id", gauge.id);
            query.bindValue(":data_id", gauge.data_id);
            query.bindValue(":data_type", gauge.data_type);
            query.bindValue(":data_category", gauge.data_category);
            query.bindValue(":indicating_value", gauge.indicating_value);
            query.bindValue(":before_friction_forward_stroke", gauge.before_friction_forward_stroke);
            query.bindValue(":before_friction_reverse_stroke", gauge.before_friction_reverse_stroke);
            query.bindValue(":after_friction_forward_stroke", gauge.after_friction_forward_stroke);
            query.bindValue(":after_friction_reverse_stroke", gauge.after_friction_reverse_stroke);
            query.bindValue(":variation_forward_stroke", gauge.variation_forward_stroke);
            query.bindValue(":variation_reverse_stroke", gauge.variation_reverse_stroke);
            query.bindValue(":theoretical_output_value", gauge.theoretical_output_value);
            query.bindValue(":first_forward_stroke", gauge.first_forward_stroke);
            query.bindValue(":first_reverse_stroke", gauge.first_reverse_stroke);
            query.bindValue(":second_forward_stroke", gauge.second_forward_stroke);
            query.bindValue(":second_reverse_stroke", gauge.second_reverse_stroke);
            query.bindValue(":third_forward_stroke", gauge.third_forward_stroke);
            query.bindValue(":third_reverse_stroke", gauge.third_reverse_stroke);
            query.bindValue(":indicating_error", gauge.indicating_error);
            query.bindValue(":return_error", gauge.return_error);
            query.bindValue(":average_forward_stroke", gauge.average_forward_stroke);
            query.bindValue(":average_reverse_stroke", gauge.average_reverse_stroke);
            query.bindValue(":average_value", gauge.average_value);
            query.bindValue(":average_return_error", gauge.average_return_error);
            query.bindValue(":item", gauge.item);
            query.bindValue(":max_indicating_error", gauge.max_indicating_error);
            query.bindValue(":max_return_error", gauge.max_return_error);
            query.bindValue(":max_friction_error", gauge.max_friction_error);
            query.bindValue(":maximum_error_absolute", gauge.maximum_error_absolute);
            query.bindValue(":forward_stroke_switch_value", gauge.forward_stroke_switch_value);
            query.bindValue(":reverse_stroke_switch_value", gauge.reverse_stroke_switch_value);
            query.bindValue(":point_deviation", gauge.point_deviation);
            query.bindValue(":different_gap", gauge.different_gap);
            query.bindValue(":max_point_deviation", gauge.max_point_deviation);
            query.bindValue(":allow_point_deviation", gauge.allow_point_deviation);
            query.bindValue(":max_different_gap", gauge.max_different_gap);
            query.bindValue(":allow_different_gap", gauge.allow_different_gap);
            query.bindValue(":zero_drift_one", gauge.zero_drift_one);
            query.bindValue(":zero_drift_two", gauge.zero_drift_two);
            query.bindValue(":zero_drift_three", gauge.zero_drift_three);
            query.bindValue(":zero_drift_four", gauge.zero_drift_four);
            query.bindValue(":zero_drift_five", gauge.zero_drift_five);
            query.bindValue(":intercept_a", gauge.intercept_a);
            query.bindValue(":slope_b", gauge.slope_b);
            query.bindValue(":sensitivity_b", gauge.sensitivity_b);
            query.bindValue(":repeatability_r", gauge.repeatability_r);
            query.bindValue(":hysteresis_h", gauge.hysteresis_h);
            query.bindValue(":linear_l", gauge.linear_l);
            query.bindValue(":basic_error_a", gauge.basic_error_a);
            query.bindValue(":periodic_stability_s_b", gauge.periodic_stability_s_b);
            query.bindValue(":create_time", currentDateTime);
            query.bindValue(":update_time", currentDateTime);

         bool isSuccess = query.exec();
       if (isSuccess) {
          QString ssql = "INSERT INTO biz_business_device_measure_data_piston_gauge "
                                     "(id, data_id, data_type, data_category, indicating_value, "
                                     "before_friction_forward_stroke, before_friction_reverse_stroke, "
                                     "after_friction_forward_stroke, after_friction_reverse_stroke, "
                                     "variation_forward_stroke, variation_reverse_stroke, "
                                     "theoretical_output_value, first_forward_stroke, first_reverse_stroke, "
                                     "second_forward_stroke, second_reverse_stroke, third_forward_stroke, "
                                     "third_reverse_stroke, indicating_error, return_error, average_forward_stroke, "
                                     "average_reverse_stroke, average_value, average_return_error, item, "
                                     "max_indicating_error, max_return_error, max_friction_error, maximum_error_absolute, "
                                     "forward_stroke_switch_value, reverse_stroke_switch_value, point_deviation, "
                                     "different_gap, max_point_deviation, allow_point_deviation, max_different_gap, "
                                     "allow_different_gap, zero_drift_one, zero_drift_two, zero_drift_three, "
                                     "zero_drift_four, zero_drift_five, intercept_a, slope_b, sensitivity_b, "
                                     "repeatability_r, hysteresis_h, linear_l, basic_error_a, periodic_stability_s_b, "
                                     "create_time, update_time) "
                                     "VALUES (:1, :2, :3, :4, :5, "
                                     ":6, :7, "
                                     ":8, :9, "
                                     ":10, :11, "
                                     ":12, :13, :14, "
                                     ":15, :16, :17, "
                                     ":18, :19, :20, :21, "
                                     ":22, :23, :24, :25, "
                                     ":26, :27, :28, :29, "
                                     ":30, :31, :32, "
                                     ":33, :34, :35, :36, "
                                     ":37, :38, :39, :40, "
                                     ":41, :42, :43, :44, :45, "
                                     ":46, :47, :48, :49, :50, "
                                     ":51, :52)";
          saveLogToSql(ssql,&gauge);
       }else {
qDebug() << "Insert data failed: " << query.lastError().text();
}

       return isSuccess;
};
//【查询】 0.02压力结果表数据
QList<QStringList> BaseCommonApi::getDeviceMeasureDataPistonGauge(QString data_id,QStringList *HeadList)
{
    QList<QStringList> resultData;
    QStringList result;
    resultData.clear();

    QSqlQuery query;
     query.prepare("SELECT * FROM biz_business_device_measure_data_piston_gauge WHERE data_id= :data_id ");
     // 将参数绑定到占位符
      query.bindValue(":data_id", data_id);
      if (query.exec()) {
          while (query.next()) {
            result.clear();
              result.append(query.value("id").toString());
              result.append(query.value("data_id").toString());  //检定数据管理基础信息表id
              result.append(query.value("data_type").toString());//检定数据类型(电接点一般压力表一个检定数据中区分两个表格)(字典code)
              result.append(query.value("data_category").toString());//检定数据类别(1检定数据,2计算结果数据)
              result.append(query.value("indicating_value").toString());//标准器示值
              result.append(query.value("before_friction_forward_stroke").toString());//轻敲前被检设备示值-正行程
              result.append(query.value("before_friction_reverse_stroke").toString());//轻敲前被检设备示值-反行程
              result.append(query.value("after_friction_forward_stroke").toString());//轻敲后被检设备示值-正行程
              result.append(query.value("after_friction_reverse_stroke").toString());//轻敲后被检设备示值-反行程
              result.append(query.value("variation_forward_stroke").toString());//轻敲前后变动量-正行程
              result.append(query.value("variation_reverse_stroke").toString());//轻敲前后变动量-反行程
              result.append(query.value("theoretical_output_value").toString());//理论输出值
              result.append(query.value("first_forward_stroke").toString());//第一次正行程
              result.append(query.value("first_reverse_stroke").toString());//第一次反行程
              result.append(query.value("second_forward_stroke").toString());//第二次正行程
              result.append(query.value("second_reverse_stroke").toString());//第二次反行程
              result.append(query.value("third_forward_stroke").toString());//第三次正行程
              result.append(query.value("third_reverse_stroke").toString());//第三次反行程
              result.append(query.value("indicating_error").toString());//示值误差
              result.append(query.value("return_error").toString());//回程误差
              result.append(query.value("average_forward_stroke").toString());//正行程平均值
              result.append(query.value("average_reverse_stroke").toString());//反行程平均值
              result.append(query.value("average_value").toString());//平均值
              result.append(query.value("average_return_error").toString());//回程误差平均值
              result.append(query.value("item").toString());//项目(结果表)
              result.append(query.value("max_indicating_error").toString());//示值误差最大值(结果表)
              result.append(query.value("max_return_error").toString());//回程误差最大值(结果表)
              result.append(query.value("max_friction_error").toString());//轻敲位移最大值(结果表)
              result.append(query.value("maximum_error_absolute").toString());//最大允许误差绝对值
              result.append(query.value("forward_stroke_switch_value").toString());//正行程切换值(电接点一般压力表)
              result.append(query.value("reverse_stroke_switch_value").toString());//反行程切换值(电接点一般压力表)
              result.append(query.value("point_deviation").toString());//设定点偏差(电接点一般压力表)
              result.append(query.value("different_gap").toString());//切换差(电接点一般压力表)
              result.append(query.value("max_point_deviation").toString());//最大设定点偏差绝对值(结果表)(电接点一般压力表的第2个结果表)
              result.append(query.value("allow_point_deviation").toString());//允许设定点偏差绝对值(结果表)(电接点一般压力表的第2个结果表)
              result.append(query.value("max_different_gap").toString());//最大切换差(结果表)(电接点一般压力表的第2个结果表)
              result.append(query.value("allow_different_gap").toString());//允许切换差(结果表)(电接点一般压力表的第2个结果表)
              result.append(query.value("zero_drift_one").toString());//零位漂移(数字压力计手工输入的第1个示值)
              result.append(query.value("zero_drift_two").toString());//零位漂移(数字压力计手工输入的第2个示值)
              result.append(query.value("zero_drift_three").toString());//零位漂移(数字压力计手工输入的第3个示值)
              result.append(query.value("zero_drift_four").toString());//零位漂移(数字压力计手工输入的第4个示值)
              result.append(query.value("zero_drift_five").toString());//零位漂移(数字压力计手工输入的第5个示值)
              result.append(query.value("intercept_a").toString());//截距a(结果表)
              result.append(query.value("slope_b").toString());//斜率b(结果表)
              result.append(query.value("sensitivity_b").toString());//灵敏度b(结果表)
              result.append(query.value("repeatability_r").toString());//重复性ξR(结果表)
              result.append(query.value("hysteresis_h").toString());//迟滞ξH(结果表)
              result.append(query.value("linear_l").toString());//线性ξL(结果表)
              result.append(query.value("basic_error_a").toString());//基本误差A(结果表)
              result.append(query.value("periodic_stability_s_b").toString());//周期稳定性Sb(结果表)
              result.append(query.value("create_time").toString());
              result.append(query.value("update_time").toString());
              resultData.append(result);
          }
      } else {
          qDebug() << "Query execution failed: " << query.lastError().text();
      }

        *HeadList <<"序号"<<"检定数据管理基础信息表id"<<"检定数据类型"<<"标准器示值"<<"轻敲前被检设备示值-正行程"<<"轻敲前被检设备示值-反行程"<<"轻敲后被检设备示值-正行程"
                 <<"轻敲后被检设备示值-反行程"<<"理论输出值"<<"第一次正行程"<<"第一次反行程"<<"第二次正行程"<<"第二次反行程"<<"第三次正行程"
                 <<"第三次反行程"<<"示值误差"<<"回程误差"<<"正行程平均值"<<"反行程平均值"<<"平均值"<<"回程误差平均值"<<"项目(结果表)"<<"示值误差最大值(结果表)"
                <<"轻敲位移最大值(结果表)"<<"最大允许误差绝对值"<<"正行程切换值(电接点一般压力表)"<<"反行程切换值(电接点一般压力表)"
               <<"设定点偏差(电接点一般压力表)"<<"切换差(电接点一般压力表)"<<"最大设定点偏差绝对值(结果表)(电接点一般压力表的第2个结果表)"<<"允许设定点偏差绝对值(结果表)(电接点一般压力表的第2个结果表)"
              <<"最大切换差(结果表)(电接点一般压力表的第2个结果表)"<<"允许切换差(结果表)(电接点一般压力表的第2个结果表)"<<"零位漂移(数字压力计手工输入的第1个示值)"
             <<"零位漂移(数字压力计手工输入的第2个示值)"<<"零位漂移(数字压力计手工输入的第3个示值)"<<"零位漂移(数字压力计手工输入的第4个示值)"
            <<"零位漂移(数字压力计手工输入的第5个示值)"<<"截距a(结果表)"<<"斜率b(结果表)"<<"灵敏度b(结果表)"<<"重复性ξR(结果表)"<<"迟滞ξH(结果表)"
           <<"线性ξL(结果表)"<<"基本误差A(结果表)"<<"周期稳定性Sb(结果表)"<<"创建日期"<<"更新日期";
      return resultData;
};

//检定数据管理-检定结果信息-直流稳压电源
QList<QStringList> BaseCommonApi::getbizBusinessDeviceMeasureDataDcPower(QString data_id,QStringList *HeadList)
{
    QList<QStringList> resultData;
    QStringList result;
    resultData.clear();

    QSqlQuery query;
     query.prepare("SELECT * FROM biz_business_device_measure_data_dc_power WHERE data_id= :data_id ");
     // 将参数绑定到占位符
      query.bindValue(":data_id", data_id);
      if (query.exec()) {
          while (query.next()) {
            result.clear();
            result.append(query.value("id").toString());

            result.append(query.value("data_id").toString());//检定数据管理基础信息表id

            result.append(query.value("data_type").toString());//检定数据类型(一个检定数据中区分多个表格)(字典code)

            result.append(query.value("data_type_type").toString());//检定项数据类型的类型(一个检定项中一个表格切换的类型)(字典value)

            result.append(query.value("output_channel").toString());//输出通道

            result.append(query.value("unit").toString());//单位

            result.append(query.value("voltage_regulator_output_value").toString());//调压器输出值

            result.append(query.value("voltage_max_difference").toString());//被检电源输出电压最大差值

            result.append(query.value("technical_index").toString());//被检电源技术指标/仪器技术指标

            result.append(query.value("technical_index_symbol").toString());//被检电源技术指标/仪器技术指标前符号

            result.append(query.value("voltage_regulation").toString());//电源电压调整率

            result.append(query.value("load_situation").toString());//负载情况

            result.append(query.value("voltage_output_value").toString());//被检电源输出电压值

            result.append(query.value("voltage_difference").toString());//电压差值

            result.append(query.value("load_regulation").toString());//负载调整率

            result.append(query.value("measure_indication_value").toString());//被检表示值

            result.append(query.value("standard_value").toString());//标准值

            result.append(query.value("maximum_error").toString());//最大允许误差

            result.append(query.value("maximum_error_unit").toString());//最大允许误差单位

            result.append(query.value("absolute_error").toString());//绝对误差

            result.append(query.value("resolution").toString());//分辨力

            result.append(query.value("standard_voltage_value").toString());//标准电压值

            result.append(query.value("standard_voltage_value_unit").toString());//标准电压值单位

            result.append(query.value("standard_resistance_value").toString());//标准电阻值

            result.append(query.value("standard_resistance_value_unit").toString());//标准电阻值单位

            result.append(query.value("ripple_voltage").toString());//纹波电压

            result.append(query.value("output_voltage_max_change").toString());//输出电压最大变化值

            result.append(query.value("short_term_stability").toString());//短期稳定性

            result.append(query.value("exceed_mark").toString());//超出范围标*(1/0)

            result.append(query.value("create_time").toString());

            result.append(query.value("update_time").toString());
          }
      }
      //待修改
      *HeadList <<"序号";
}


//【查询】检定项直流稳压电源
QMap<QString,QList<QStringList>> BaseCommonApi::getDeviceMeasureItemDataDcPower(QString itemCatoryName,QString itemId,QMap<QString, QStringList> *headList){
    QMap<QString, QList<QStringList>> DataMapList;
    QList<QStringList> resultData;
    QStringList result;
    resultData.clear();

    QSqlQuery query;
     query.prepare(
                   " SELECT bbdmiddp.*,bbdmii.appearance_function_check,bbdmii.voltage_regulation,bbdmii.load_regulation,"
                   " bbdmii.voltage_represent_error,bbdmii.current_represent_error_direct,bbdmii.current_represent_error_indirect,"
                   " bbdmii.ripple_voltage,bbdmii.voltage_output_stability "
                   " FROM biz_business_device_measure_item_data_dc_power bbdmiddp "
                   " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmiddp.item_id "
                   " WHERE bbdmiddp.item_id =  :itemId "
                   " ORDER BY bbdmiddp.update_time DESC ");
     // 将参数绑定到占位符
      query.bindValue(":itemId", itemId);
      if (query.exec()) {
          while (query.next()) {
              result.clear();
              result.append(query.value("id").toString());
              result.append(query.value("item_id").toString());  //检定项目ID
              result.append(query.value("data_type").toString());//检定项数据类型(一个检定项中区分两个表格)(字典code)
              result.append(query.value("data_type_type").toString());//检定项数据类型的类型(一个检定项中一个表格切换的类型)(字典code)
              result.append(query.value("output_channel").toString());//输出通道
              result.append(query.value("unit").toString());//单位
              result.append(query.value("voltage_regulator_output_value").toString());//调压器输出值
              result.append(query.value("technical_index").toString());//被检电源技术指标/仪器技术指标
              result.append(query.value("technical_index_symbol").toString());//被检电源技术指标/仪器技术指标前符号
              result.append(query.value("load_situation").toString());//负载情况
              result.append(query.value("measure_indication_value").toString());//被检表示值
              result.append(query.value("full_scale_value").toString());//指针式仪表满量程值
              result.append(query.value("standard_resistance_value").toString());//标准电阻值
              result.append(query.value("standard_resistance_value_unit").toString());//标准电阻值单位
              result.append(query.value("error_param_a").toString());//误差参数a
              result.append(query.value("accuracy_a").toString());//准确度a
              result.append(query.value("error_param_b").toString());//误差参数b
              result.append(query.value("maximum_error").toString());//最大允许误差
              result.append(query.value("resolution").toString());//分辨力
              result.append(query.value("appearance_function_check").toString());//外观及功能性检查(1/0)
              result.append(query.value("voltage_regulation").toString());//电源电压调整率(1/0)(直流稳压电源)
              result.append(query.value("load_regulation").toString());//负载调整率(1/0)(直流稳压电源)
              result.append(query.value("voltage_represent_error").toString());//电压表示值误差(1/0)(直流稳压电源)
              result.append(query.value("current_represent_error_direct").toString());//电流表示值误差(直接测量)(1/0)(直流稳压电源)
              result.append(query.value("current_represent_error_indirect").toString());//电流表示值误差(间接测量)(1/0)(直流稳压电源)
              result.append(query.value("ripple_voltage").toString());//纹波电压(1/0)(直流稳压电源)
              result.append(query.value("voltage_output_stability").toString());//输出电压短期稳定性(1/0)(直流稳压电源)
              result.append(query.value("create_time").toString());
              result.append(query.value("update_time").toString());
              resultData.append(result);
          }
      } else {
          qDebug() << "Query execution failed: " << query.lastError().text();
      }


      //进行检定项目列头转换
      DataMapList= GetDataReturnItemListByDcPower(itemCatoryName,resultData,DataMapList,headList);
      return DataMapList;
};
//直流稳压电源 检定项头
QMap<QString, QList<QStringList>> BaseCommonApi::GetDataReturnItemListByDcPower(QString itemCatoryName,QList<QStringList> ResultData,QMap<QString, QList<QStringList>> DataMapList,QMap<QString, QStringList> *HeadMapList){
    QList<QStringList> VpsAdjustmentRateList;
    QList<QStringList> LoadAdjustmentRateList;
    QList<QStringList> VoltageIndicationErrorList;
    QList<QStringList> CurrentIndicationErrorDirectList;
    QList<QStringList> CurrentIndicationErrorIndirectList;
    QList<QStringList> RippleVoltageList;
    QList<QStringList> ShortTermStabilityVoltageList;
    if(itemCatoryName.contains("直流稳压电源")){
    for(const QStringList &row : ResultData)
    {
       QString VerificationItem=NULL;
        if (!row.isEmpty() && row[20]=="1" && row[2] == "1") {
                VerificationItem = "电源电压调整率";
                //添加列头
                QStringList head;
                head  <<"序号"<<"检定项目"<<"输出通道"<<"单位"<<"调压器输出值"
                     <<"被检电源输出电压值"<<"被检电源输出电压最大差值"<<"被检电源技术指标"<<"被检电源技术指标前符号"<<"电源电压调整率" ;
                HeadMapList->insert(VerificationItem,head);
                //添加数据
                QStringList Data;
                Data.append(row[0]);  //ID
                Data.append(row[2]);  //检定项目
                Data.append(row[4]);//输出通道
                Data.append(row[5]);//单位
                Data.append(row[6]);//调压器输出值
                Data.append("");//被检电源输出电压值
                Data.append("");//被检电源输出电压最大差值  公式
                Data.append(row[8] + row[7]);//被检电源技术指标
                Data.append(row[8]);//被检电源技术指标单位
                Data.append("");//电源电压调整率   公式
                VpsAdjustmentRateList.append(Data);
         }else if(!row.isEmpty() && row[21]=="1" && row[2] =="2"){
            VerificationItem = "负载调整率";
            //添加列头
            QStringList head;
            head  <<"序号"<<"检定项目"<<"输出通道"<<"单位"<<"负载情况"
                 <<"被检电源输出电压值"<<"电压差值"<<"被检电源技术指标"<<"负载调整率" ;
            HeadMapList->insert(VerificationItem,head);
            //添加数据
            QStringList Data;
            Data.append(row[0]);  //ID
            Data.append(row[2]);  //检定项目
            Data.append(row[4]);//输出通道
            Data.append(row[5]);//单位
            Data.append(row[9]);//负载情况
            Data.append("");//被检电源输出电压值
            Data.append("");//电压差值
            Data.append(row[8] + row[7]);//被检电源技术指标
            Data.append("");//负载调整率
            LoadAdjustmentRateList.append(Data);
        }else if(!row.isEmpty() && row[22]=="1" && row[2] =="3"){
            VerificationItem = "电压示值误差";
            //添加列头
            QStringList head;
            head  <<"序号"<<"检定项目"<<"输出通道"<<"单位"<<"被检表示值"
                 <<"标准值"<<"最大允许误差"<<"绝对误差" ;
            HeadMapList->insert(VerificationItem,head);
            //添加数据
            QStringList Data;
            Data.append(row[0]);  //ID
            Data.append(row[2]);  //检定项目
            Data.append(row[4]);//输出通道
            Data.append(row[5]);//单位
            Data.append(row[10]);//被检表示值
            Data.append("");//标准值
            Data.append(row[17]);//最大允许误差
            Data.append("");//绝对误差
            VoltageIndicationErrorList.append(Data);
        }else if(!row.isEmpty() && row[23]=="1" && row[2] =="4"){
            VerificationItem = "电流示值误差(直接测量)";
            //添加列头
            QStringList head;
            head  <<"序号"<<"检定项目"<<"输出通道"<<"单位"<<"被检表示值"
                 <<"标准值"<<"最大允许误差"<<"绝对误差" ;
            HeadMapList->insert(VerificationItem,head);
            //添加数据
            QStringList Data;
            Data.append(row[0]);  //ID
            Data.append(row[2]);  //检定项目
            Data.append(row[4]);//输出通道
            Data.append(row[5]);//单位
            Data.append(row[10]);//被检表示值
            Data.append("");//标准值
            Data.append(row[17]);//最大允许误差
            Data.append("");//绝对误差
            CurrentIndicationErrorDirectList.append(Data);
        }else if(!row.isEmpty() && row[24]=="1" && row[2] =="5"){
            VerificationItem = "电流示值误差(间接测量)";
            //添加列头
            QStringList head;
            head  <<"序号"<<"检定项目"<<"输出通道"<<"单位"<<"被检表示值"
                 <<"标准电压值"<<"标准电阻值"<<"标准值"<<"最大允许误差"<<"绝对误差" ;
            HeadMapList->insert(VerificationItem,head);
            //添加数据
            QStringList Data;
            Data.append(row[0]);  //ID
            Data.append(row[2]);  //检定项目
            Data.append(row[4]);//输出通道
            Data.append(row[5]);//单位
            Data.append(row[10]);//被检表示值
            Data.append("");//标准电压值
            Data.append(row[12]);//标准电阻值
            Data.append("");//标准值
            Data.append(row[17]);//最大允许误差
            Data.append("");//绝对误差
            CurrentIndicationErrorIndirectList.append(Data);
        }else if(!row.isEmpty() && row[25]=="1" && row[2] =="6"){
            VerificationItem = "纹波电压";
            //添加列头
            QStringList head;
            head  <<"序号"<<"检定项目"<<"输出通道"<<"单位"<<"被检电源技术指标"<<"纹波电压" ;
            HeadMapList->insert(VerificationItem,head);
            //添加数据
            QStringList Data;
            Data.append(row[0]);  //ID
            Data.append(row[2]);  //检定项目
            Data.append(row[4]);//输出通道
            Data.append(row[5]);//单位
            Data.append(row[8] + row[7]);//被检电源技术指标
            Data.append("");//纹波电压
            RippleVoltageList.append(Data);
        }else if(!row.isEmpty() && row[25]=="1" && row[2] =="7"){
            VerificationItem = "输出电压短期稳定性";
            //添加列头
            QStringList head;
            head  <<"序号"<<"检定项目"<<"输出通道"<<"单位"<<"被测电源输出电压"<<"输出电压最大变化值"
                 <<"仪器技术指标"<<"短期稳定性";
            HeadMapList->insert(VerificationItem,head);
            //添加数据
            QStringList Data;
            Data.append(row[0]);  //ID
            Data.append(row[2]);  //检定项目
            Data.append(row[4]);//输出通道
            Data.append(row[5]);//单位
            Data.append("");//被测电源输出电压
            Data.append("");//输出电压最大变化值
            Data.append(row[8] + row[7]);//仪器技术指标
            Data.append("");//短期稳定性
            ShortTermStabilityVoltageList.append(Data);
        }

     }
 }
    if(VpsAdjustmentRateList.count()!=0){
        DataMapList.insert("电源电压调整率",VpsAdjustmentRateList);
    };
    if(LoadAdjustmentRateList.count()!=0){
        DataMapList.insert("负载调整率",LoadAdjustmentRateList);
    };
    if(VoltageIndicationErrorList.count()!=0){
        DataMapList.insert("电压示值误差",VoltageIndicationErrorList);
    };
    if(CurrentIndicationErrorDirectList.count()!=0){
        DataMapList.insert("电流示值误差(直接测量)",CurrentIndicationErrorDirectList);
    };
    if(CurrentIndicationErrorIndirectList.count()!=0){
        DataMapList.insert("电流示值误差(间接测量)",CurrentIndicationErrorIndirectList);
    };
    if(RippleVoltageList.count()!=0){
        DataMapList.insert("纹波电压",RippleVoltageList);
    };
    if(ShortTermStabilityVoltageList.count()!=0){
        DataMapList.insert("输出电压短期稳定性",ShortTermStabilityVoltageList);
    };
    return  DataMapList;
};
    //【结果保存】直流稳压电源
bool BaseCommonApi::InsertbizBusinessDeviceMeasureDataDcPower(bizBusinessDeviceMeasureDataDcPower power)
{
    QSqlQuery query;
    query.prepare(
      "INSERT INTO biz_business_device_measure_data_dc_power "
      "(id, data_id, data_type, data_type_type, output_channel, unit, voltage_regulator_output_value, voltage_max_difference, "
      "technical_index, technical_index_symbol, voltage_regulation, load_situation, voltage_output_value, voltage_difference, "
      "load_regulation, measure_indication_value, standard_value, maximum_error, maximum_error_unit, absolute_error, resolution, "
      "standard_voltage_value, standard_voltage_value_unit, standard_resistance_value, standard_resistance_value_unit, ripple_voltage, "
      "output_voltage_max_change, short_term_stability, exceed_mark, create_time, update_time) "
      "VALUES "
      "(:id, :data_id, :data_type, :data_type_type, :output_channel, :unit, :voltage_regulator_output_value, :voltage_max_difference, "
      ":technical_index, :technical_index_symbol, :voltage_regulation, :load_situation, :voltage_output_value, :voltage_difference, "
      ":load_regulation, :measure_indication_value, :standard_value, :maximum_error, :maximum_error_unit, :absolute_error, :resolution, "
      ":standard_voltage_value, :standard_voltage_value_unit, :standard_resistance_value, :standard_resistance_value_unit, :ripple_voltage, "
      ":output_voltage_max_change, :short_term_stability, :exceed_mark, :create_time, :update_time)"
    );
    QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
    query.bindValue(":id", power.id);
    query.bindValue(":data_id", power.data_id);
    query.bindValue(":data_type", power.data_type);
    query.bindValue(":data_type_type", power.data_type_type);
    query.bindValue(":output_channel", power.output_channel);
    query.bindValue(":unit", power.unit);
    query.bindValue(":voltage_regulator_output_value", power.voltage_regulator_output_value);
    query.bindValue(":voltage_max_difference", power.voltage_max_difference);
    query.bindValue(":technical_index", power.technical_index);
    query.bindValue(":technical_index_symbol", power.technical_index_symbol);
    query.bindValue(":voltage_regulation", power.voltage_regulation);
    query.bindValue(":load_situation", power.load_situation);
    query.bindValue(":voltage_output_value", power.voltage_output_value);
    query.bindValue(":voltage_difference", power.voltage_difference);
    query.bindValue(":load_regulation", power.load_regulation);
    query.bindValue(":measure_indication_value", power.measure_indication_value);
    query.bindValue(":standard_value", power.standard_value);
    query.bindValue(":maximum_error", power.maximum_error);
    query.bindValue(":maximum_error_unit", power.maximum_error_unit);
    query.bindValue(":absolute_error", power.absolute_error);
    query.bindValue(":resolution", power.resolution);
    query.bindValue(":standard_voltage_value", power.standard_voltage_value);
    query.bindValue(":standard_voltage_value_unit", power.standard_voltage_value_unit);
    query.bindValue(":standard_resistance_value", power.standard_resistance_value);
    query.bindValue(":standard_resistance_value_unit", power.standard_resistance_value_unit);
    query.bindValue(":ripple_voltage", power.ripple_voltage);
    query.bindValue(":output_voltage_max_change", power.output_voltage_max_change);
    query.bindValue(":short_term_stability", power.short_term_stability);
    query.bindValue(":exceed_mark", power.exceed_mark);
    query.bindValue(":create_time", currentDateTime);
    query.bindValue(":update_time", currentDateTime);
    bool isSuccess = query.exec();
  if (isSuccess) {
      QString ssql =       "INSERT INTO biz_business_device_measure_data_dc_power "
                           "(id, data_id, data_type, data_type_type, output_channel, unit, voltage_regulator_output_value, voltage_max_difference, "
                           "technical_index, technical_index_symbol, voltage_regulation, load_situation, voltage_output_value, voltage_difference, "
                           "load_regulation, measure_indication_value, standard_value, maximum_error, maximum_error_unit, absolute_error, resolution, "
                           "standard_voltage_value, standard_voltage_value_unit, standard_resistance_value, standard_resistance_value_unit, ripple_voltage, "
                           "output_voltage_max_change, short_term_stability, exceed_mark, create_time, update_time) "
                           "VALUES "
                           "(:1, :2, :3, :4, :5, :6, :7, :8, "
                           ":9, :10, :11, :12, :13, :14, "
                           ":15, :16, :17, :18, :19, :20, :21, "
                           ":22, :23, :24, :25, :26, "
                           ":27, :28, :29, :30, :31)";
      saveLogToSql(ssql,&power);
  }else {
qDebug() << "Insert data failed: " << query.lastError().text();
}

  return isSuccess;
};

//检定项 示波器检定装置
QMap<QString, QList<QStringList>> BaseCommonApi::getDeviceOscilloscopeCalibration(QString itemCatoryName,QString itemId,QMap<QString, QStringList> *headList)
{
    QMap<QString, QList<QStringList>> DataMapList;
    QList<QStringList> resultData;
    QStringList result;
    resultData.clear();

    QSqlQuery query;
     query.prepare("SELECT *,bbdmii.band_width as BW  FROM biz_business_device_measure_item_data_oscilloscope bbdmido"
                 "  JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmido.item_id "
                 " WHERE bbdmido.item_id = :itemId  ORDER BY bbdmido.update_time DESC");
     // 将参数绑定到占位符
      query.bindValue(":itemId", itemId);
      if (query.exec()) {
          while (query.next()) {
              result.clear();
              result.append(query.value("id").toString());
              result.append(query.value("item_id").toString());  //检定项目ID
              result.append(query.value("time_base").toString());//时基
              result.append(query.value("current_gain").toString());//直流增益(示波器-数字)
              result.append(query.value("current_bias").toString());//直流偏置(示波器-数字)
              result.append(query.value("BW").toString());//频带宽度 (示波器-数字/模拟)
              result.append(query.value("trigger_sensitivity").toString());//触发灵敏度(示波器-数字/模拟)
              result.append(query.value("rise_time").toString());//上升时间(示波器-数字/模拟)
              result.append(query.value("input_resistance").toString());//输入电阻 (示波器-数字/模拟)
              result.append(query.value("calibrating_signal").toString());//校准信号(示波器-数字/模拟)
              result.append(query.value("scan_time_coefficient").toString());//扫描时间系数及扩展(示波器-模拟)
              result.append(query.value("cycle_signal").toString());//周期时标信号
              result.append(query.value("cycle_signal_unit").toString());//周期时标信号单位
              result.append(query.value("technical_index").toString());//技术指标
              result.append(query.value("technical_index_unit").toString());//技术指标单位
              result.append(query.value("thoroughfare").toString());//通道
              result.append(query.value("impedance").toString());//阻抗
              result.append(query.value("impedance_unit").toString());//阻抗单位
              result.append(query.value("vertical_deflect_coefficient").toString());//垂直偏转系数/div
              result.append(query.value("vertical_deflect_coefficient_unit").toString());//垂直偏转系数单位
              result.append(query.value("standard_value").toString());//标准值
              result.append(query.value("standard_value_unit").toString());//标准值单位
              result.append(query.value("band_width").toString());//频带宽度
              result.append(query.value("band_width_unit").toString());//频带宽度单位
              result.append(query.value("amplitude").toString());//幅度
              result.append(query.value("amplitude_unit").toString());//幅度单位
              result.append(query.value("trigger_type").toString());//触发类型
              result.append(query.value("signal_frequency").toString());//信号频率
              result.append(query.value("nominal_value").toString());//标称值
              result.append(query.value("nominal_value_unit").toString());//标称值单位
              result.append(query.value("data_type").toString());//
              result.append(query.value("item_type").toString());//
              result.append(query.value("create_time").toString());
              result.append(query.value("update_time").toString());
              resultData.append(result);
          }
      } else {
          qDebug() << "Query execution failed: " << query.lastError().text();
      }


      DataMapList= GetDataReturnItemListByOscilloscope(itemCatoryName,resultData,DataMapList,headList);
      return DataMapList;
};
QMap<QString, QList<QStringList>> BaseCommonApi::GetDataReturnItemListByOscilloscope(QString itemCatoryName,QList<QStringList> ResultData,QMap<QString, QList<QStringList>> DataMapList,QMap<QString, QStringList> *HeadMapList)
{
    QList<QStringList> time_baseList;
      QList<QStringList> Current_gainList;
      QList<QStringList> Current_biasList;
      QList<QStringList> band_widthList;
      QList<QStringList> trigger_sensitivity;
      QList<QStringList> rise_timeList;
      QList<QStringList> input_resistanceList;
      QList<QStringList> calibrating_signalList;
      if(itemCatoryName.contains("数字示波器")){
      for(const QStringList &row : ResultData)
      {
         QString VerificationItem=NULL;
         QString CHNAME="CH1";
          if (!row.isEmpty() && row[2]=="1" && row[30] =="1") {
                  VerificationItem = "时基";
                   QStringList head;

                  head  <<"序号"<<"检定项目"<<"周期时标信号"<<"时基绝对误差△T/ns"<<"时基相对误差△δ"
                       <<"技术指标"<<"结论";

                  HeadMapList->insert(VerificationItem,head);
                  //添加数据
                  QStringList Data;

                  Data.append(row[0]);  //ID
                  Data.append(VerificationItem);  //检定项目
                  Data.append(row[11]+row[12]);  //周期时标信号
                  Data.append("");//时基绝对误差△T/ns
                  Data.append("");//时基相对误差△δ
                  Data.append("");//技术指标
                  Data.append("");//结论
                  time_baseList.append(Data);
           }
          if (!row.isEmpty() && row[3]=="1" && row[30] =="2") {
                  VerificationItem = "直流增益";
                   QStringList head;
                  //添加列头
                  head  <<"序号"<<"检定项目"<<"通道"<<"阻抗" <<"幅度/DIV" <<"标准值"
                       <<"测量值"<<"相对误差"<<"技术指标" <<"结论";
                  HeadMapList->insert(VerificationItem,head);
                  //添加数据
                  QStringList Data;
                  Data.append(row[0]);  //ID
                  Data.append(VerificationItem);  //检定项目
                  Data.append(row[15]);//通道
                  Data.append(row[16]+row[17]);//阻抗
                  Data.append(row[18]+row[19]);//垂直偏转系数(/div)
                  Data.append(row[20]+row[21]);//标准值
                  Data.append("");//测量值
                  Data.append("");//相对误差
                  Data.append(row[13]);//技术指标
                  Data.append("");//结论
                  Current_gainList.append(Data);
           }
          if (!row.isEmpty()&& row[4]=="1" && row[30] =="3") {
                  VerificationItem = "直流偏置";
                   QStringList head;
                  //添加列头
                  head  <<"序号"<<"检定项目"<<"通道"<<"阻抗"<<"幅度/DIV"<<"标准值"
                       <<"测量值"<<"误差"<<"相对误差"<<"技术指标" <<"结论";
                  HeadMapList->insert(VerificationItem,head);
                  //添加数据
                  QStringList Data;
                  Data.append(row[0]);  //ID
                  Data.append(VerificationItem);  //检定项目
                  Data.append(row[15]);//通道
                  Data.append(row[16]+row[17]);//阻抗
                  Data.append(row[18]+row[19]);//垂直偏转系数(/div)
                  Data.append(row[20]+row[21]);//标准值
                  Data.append("");//测量值
                  Data.append("");//误差
                  Data.append("");//相对误差
                  Data.append(row[13]);//技术指标
                  Data.append("");//结论
                  Current_biasList.append(Data);
           }
          if (!row.isEmpty() && row[5]=="1" && row[30] =="4") {
                  VerificationItem = "频带宽度";
                   QStringList head;
                  //添加列头
                  head  <<"序号"<<"检定项目"<<"通道"<<"阻抗"<<"幅度/DIV" <<"标准值"
                        << "频带宽度" <<"参考幅度" <<"参考幅度单位" <<"测量幅度" <<"测量幅度单位"
                        <<"分贝数(dB)" <<"技术指标" << "结论";
                  HeadMapList->insert(VerificationItem,head);
                  //添加数据
                  QStringList Data;
                  Data.append(row[0]);  //ID
                  Data.append(VerificationItem);  //检定项目
                  Data.append(row[15]);//通道
                  Data.append(row[16]+row[17]);//阻抗
                  Data.append(row[18]+row[19]);//垂直偏转系数(/div)
                  Data.append(row[20]+row[21]);//标准值
                  Data.append(row[22]+row[23]);//频带宽度
                  Data.append("");//参考幅度
                  Data.append(row[19]);//参考幅度单位
                  Data.append("");//测量幅度
                  Data.append(row[19]);//测量幅度单位
                  Data.append("");//分贝数(dB)
                  Data.append(row[13]);//技术指标
                  Data.append("");//结论
                  band_widthList.append(Data);
           }
          if (!row.isEmpty() && row[6]=="1" && row[30] =="5") {
                  VerificationItem = "触发灵敏度";
                   QStringList head;
                  //添加列头
                  head  <<"序号"<<"检定项目"<<"通道"<<"触发类型"<<"信号频率"
                        << "标称值" <<"测量值" <<"结论";
                  HeadMapList->insert(VerificationItem,head);
                  //添加数据
                  QStringList Data;
                  Data.append(row[0]);  //ID
                  Data.append(VerificationItem);  //检定项目
                  Data.append(row[15]);//通道
                  Data.append(row[26]);//触发类型
                  Data.append(row[27]);//信号频率
                  Data.append(row[28]);//标称值
                  Data.append("");//测量值
                  Data.append("");//结论
                  trigger_sensitivity.append(Data);
                  }
          if (!row.isEmpty() && row[7]=="1" && row[30] =="6") {
                  VerificationItem = "上升时间";
                   QStringList head;
                  //添加列头
                  head  <<"序号"<<"检定项目"<<"通道"<<"阻抗"<<"幅度/DIV"
                        <<"标准值" <<"测量值"<<"单位"<<"技术指标"  <<"结论";
                  HeadMapList->insert(VerificationItem,head);
                  //添加数据
                  QStringList Data;
                  Data.append(row[0]);  //ID
                  Data.append(VerificationItem);  //检定项目
                  Data.append(row[15]);//通道
                  Data.append(row[16]+row[17]);//阻抗
                  Data.append(row[18]+row[19]);//垂直偏转系数(/div)
                  Data.append(row[20]+row[21]);//标准值
                  Data.append("");//测量值
                  Data.append("ns");//测量值单位
                  Data.append(row[13]);//技术指标
                  Data.append("");//结论
                  rise_timeList.append(Data);
           }
          if (!row.isEmpty() && row[8]=="1" && row[30] =="7") {
                  VerificationItem = "输入电阻";
                   QStringList head;
                  //添加列头
                  head  <<"序号"<<"检定项目"<<"通道"<<"标称值"<<"幅度/DIV"
                       <<"测量值"<<"测量值单位"<<"技术指标" <<"结论";
                  HeadMapList->insert(VerificationItem,head);
                  //添加数据
                  QStringList Data;
                  Data.append(row[0]);  //ID
                  Data.append(VerificationItem);  //检定项目
                  Data.append(row[15]);//通道
                  Data.append(row[28]+row[29]);//标称值
                  Data.append(row[18]+row[19]);//垂直偏转系数(/div)
                  Data.append("");//测量值
                  Data.append("");//测量值单位
                  Data.append(row[13]);//技术指标
                  Data.append("");//结论
                  input_resistanceList.append(Data);
           }
          if (!row.isEmpty() && row[9]=="1" && row[30] =="8") {
                  VerificationItem = "校准信号";
                   QStringList head;
                  //添加列头
                  head  <<"序号"<<"检定项目"<<"项目"<<"标称值"<<"顶部测量值"<<"底部测量值"
                       <<"测量值"<<"测量值单位"<<"相对误差";
                  HeadMapList->insert(VerificationItem,head);
                  //添加数据
                  QStringList Data;
                  Data.append(row[0]);  //ID
                  Data.append(VerificationItem);  //检定项目
                  Data.append(row[31]);//项目
                  Data.append(row[28]+row[29]);//标称值
                  Data.append("");//顶部测量值
                  Data.append("");//底部测量值
                  Data.append("");//测量值
                  Data.append("");//测量值单位

                  Data.append("");//相对误差
                  calibrating_signalList.append(Data);
    }

      }
          if(time_baseList.count()!=0){DataMapList.insert("时基",time_baseList);}
          if(Current_gainList.count()!=0){DataMapList.insert("直流增益",Current_gainList);}
          if(Current_biasList.count()!=0){DataMapList.insert("直流偏置",Current_biasList);}
          if(band_widthList.count()!=0){DataMapList.insert("频带宽度",band_widthList);}
          if(trigger_sensitivity.count()!=0){DataMapList.insert("触发灵敏度",trigger_sensitivity);}
          if(rise_timeList.count()!=0){DataMapList.insert("上升时间",rise_timeList);}
          if(input_resistanceList.count()!=0){DataMapList.insert("输入电阻",input_resistanceList);}
          if(calibrating_signalList.count()!=0){DataMapList.insert("校准信号",calibrating_signalList);}
          }
      return DataMapList;
};
// 【结果保存】 示波器
bool BaseCommonApi::InsertDeviceOscilloscopeCalibration(DeviceOscilloscopeCalibration scope){
            QSqlQuery query;
            query.prepare("INSERT INTO biz_business_device_measure_data_oscilloscope ( "
                          " id, data_id, data_type, cycle_signal, cycle_signal_unit,"
                          " time_base_absolute_error, time_base_absolute_error_unit,"
                          " time_base_relative_error, time_base_relative_error_unit,"
                          " technical_index_symbol, technical_index, technical_index_unit,"
                          " conclusion, thoroughfare, impedance, impedance_unit,"
                          " vertical_deflect_coefficient, vertical_deflect_coefficient_unit,"
                          " standard_value, standard_value_unit, measure_value, measure_value_unit,"
                          " relative_error, error_value, band_width, band_width_unit,"
                          " reference_amplitude, reference_amplitude_unit, measure_amplitude,"
                          " measure_amplitude_unit, decibel_number, trigger_type,"
                          " signal_frequency, signal_frequency_unit, item_type, nominal_value,"
                          " nominal_value_unit, top_measure_value, top_measure_value_unit,"
                          " bottom_measure_value, bottom_measure_value_unit, scan_type,"
                          " horizontal_scale_gear, horizontal_scale_gear_unit,"
                          " vertical_scale_gear, vertical_scale_gear_unit, frequency_upper,"
                          " frequency_upper_unit, output_signal_amplitude, rise_time,"
                          " correct_rise_time, signal_type, nominal_amplitude_value,"
                          " nominal_amplitude_value_unit, nominal_frequency_value,"
                          " nominal_frequency_value_unit, measure_amplitude_value,"
                          " measure_amplitude_value_unit, measure_frequency_value,"
                          " frequency_deviation, amplitude_deviation, exceed_mark, create_time,"
                          " update_time"
                          " ) VALUES ("
                          " :id, :data_id, :data_type, :cycle_signal, :cycle_signal_unit,"
                          " :time_base_absolute_error, :time_base_absolute_error_unit,"
                          " :time_base_relative_error, :time_base_relative_error_unit,"
                          " :technical_index_symbol, :technical_index, :technical_index_unit,"
                          " :conclusion, :thoroughfare, :impedance, :impedance_unit,"
                          " :vertical_deflect_coefficient, :vertical_deflect_coefficient_unit,"
                          " :standard_value, :standard_value_unit, :measure_value, :measure_value_unit,"
                          " :relative_error, :error_value, :band_width, :band_width_unit,"
                          " :reference_amplitude, :reference_amplitude_unit, :measure_amplitude,"
                          " :measure_amplitude_unit, :decibel_number, :trigger_type,"
                          " :signal_frequency, :signal_frequency_unit, :item_type, :nominal_value,"
                          " :nominal_value_unit, :top_measure_value, :top_measure_value_unit,"
                          " :bottom_measure_value, :bottom_measure_value_unit, :scan_type,"
                          " :horizontal_scale_gear, :horizontal_scale_gear_unit,"
                          " :vertical_scale_gear, :vertical_scale_gear_unit, :frequency_upper,"
                          " :frequency_upper_unit, :output_signal_amplitude, :rise_time,"
                          " :correct_rise_time, :signal_type, :nominal_amplitude_value,"
                          " :nominal_amplitude_value_unit, :nominal_frequency_value,"
                          " :nominal_frequency_value_unit, :measure_amplitude_value,"
                          " :measure_amplitude_value_unit, :measure_frequency_value,"
                          " :frequency_deviation, :amplitude_deviation, :exceed_mark, :create_time,"
                          " :update_time );");
            QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
            query.bindValue(":id", scope.id);
            query.bindValue(":data_id", scope.data_id);
            query.bindValue(":data_type", scope.data_type);
            query.bindValue(":cycle_signal", scope.cycle_signal);
            query.bindValue(":cycle_signal_unit", scope.cycle_signal_unit);
            query.bindValue(":time_base_absolute_error", scope.time_base_absolute_error);
            query.bindValue(":time_base_absolute_error_unit", scope.time_base_absolute_error_unit);
            query.bindValue(":time_base_relative_error", scope.time_base_relative_error);
            query.bindValue(":time_base_relative_error_unit", scope.time_base_relative_error_unit);
            query.bindValue(":technical_index_symbol", scope.technical_index_symbol);
            query.bindValue(":technical_index", scope.technical_index);
            query.bindValue(":technical_index_unit", scope.technical_index_unit);
            query.bindValue(":conclusion", scope.conclusion);
            query.bindValue(":thoroughfare", scope.thoroughfare);
            query.bindValue(":impedance", scope.impedance);
            query.bindValue(":impedance_unit", scope.impedance_unit);
            query.bindValue(":vertical_deflect_coefficient", scope.vertical_deflect_coefficient);
            query.bindValue(":vertical_deflect_coefficient_unit", scope.vertical_deflect_coefficient_unit);
            query.bindValue(":standard_value", scope.standard_value);
            query.bindValue(":standard_value_unit", scope.standard_value_unit);
            query.bindValue(":measure_value", scope.measure_value);
            query.bindValue(":measure_value_unit", scope.measure_value_unit);
            query.bindValue(":relative_error", scope.relative_error);
            query.bindValue(":error_value", scope.error_value);
            query.bindValue(":band_width", scope.band_width);
            query.bindValue(":band_width_unit", scope.band_width_unit);
            query.bindValue(":reference_amplitude", scope.reference_amplitude);
            query.bindValue(":reference_amplitude_unit", scope.reference_amplitude_unit);
            query.bindValue(":measure_amplitude", scope.measure_amplitude);
            query.bindValue(":measure_amplitude_unit", scope.measure_amplitude_unit);
            query.bindValue(":decibel_number", scope.decibel_number);
            query.bindValue(":trigger_type", scope.trigger_type);
            query.bindValue(":signal_frequency", scope.signal_frequency);
            query.bindValue(":signal_frequency_unit", scope.signal_frequency_unit);
            query.bindValue(":item_type", scope.item_type);
            query.bindValue(":nominal_value", scope.nominal_value);
            query.bindValue(":nominal_value_unit", scope.nominal_value_unit);
            query.bindValue(":top_measure_value", scope.top_measure_value);
            query.bindValue(":top_measure_value_unit", scope.top_measure_value_unit);
            query.bindValue(":bottom_measure_value", scope.bottom_measure_value);
            query.bindValue(":bottom_measure_value_unit", scope.bottom_measure_value_unit);
            query.bindValue(":scan_type", scope.scan_type);
            query.bindValue(":horizontal_scale_gear", scope.horizontal_scale_gear);
            query.bindValue(":horizontal_scale_gear_unit", scope.horizontal_scale_gear_unit);
            query.bindValue(":vertical_scale_gear", scope.vertical_scale_gear);
            query.bindValue(":vertical_scale_gear_unit", scope.vertical_scale_gear_unit);
            query.bindValue(":frequency_upper", scope.frequency_upper);
            query.bindValue(":frequency_upper_unit", scope.frequency_upper_unit);
            query.bindValue(":output_signal_amplitude", scope.output_signal_amplitude);
            query.bindValue(":rise_time", scope.rise_time);
            query.bindValue(":correct_rise_time", scope.correct_rise_time);
            query.bindValue(":signal_type", scope.signal_type);
            query.bindValue(":nominal_amplitude_value", scope.nominal_amplitude_value);
            query.bindValue(":nominal_amplitude_value_unit", scope.nominal_amplitude_value_unit);
            query.bindValue(":nominal_frequency_value", scope.nominal_frequency_value);
            query.bindValue(":nominal_frequency_value_unit", scope.nominal_frequency_value_unit);
            query.bindValue(":measure_amplitude_value", scope.measure_amplitude_value);
            query.bindValue(":measure_amplitude_value_unit", scope.measure_amplitude_value_unit);
            query.bindValue(":measure_frequency_value", scope.measure_frequency_value);
            query.bindValue(":measure_frequency_value_unit", scope.measure_frequency_value_unit);
            query.bindValue(":frequency_deviation", scope.frequency_deviation);
            query.bindValue(":amplitude_deviation", scope.amplitude_deviation);
            query.bindValue(":exceed_mark", scope.exceed_mark);
            query.bindValue(":create_time", currentDateTime);
            query.bindValue(":update_time", currentDateTime);
            bool isSuccess = query.exec();
            if (isSuccess) {
               QString ssql =  "INSERT INTO biz_business_device_measure_data_oscilloscope ( "
                                          " id, data_id, data_type, cycle_signal, cycle_signal_unit,"
                                          " time_base_absolute_error, time_base_absolute_error_unit,"
                                          " time_base_relative_error, time_base_relative_error_unit,"
                                          " technical_index_symbol, technical_index, technical_index_unit,"
                                          " conclusion, thoroughfare, impedance, impedance_unit,"
                                          " vertical_deflect_coefficient, vertical_deflect_coefficient_unit,"
                                          " standard_value, standard_value_unit, measure_value, measure_value_unit,"
                                          " relative_error, error_value, band_width, band_width_unit,"
                                          " reference_amplitude, reference_amplitude_unit, measure_amplitude,"
                                          " measure_amplitude_unit, decibel_number, trigger_type,"
                                          " signal_frequency, signal_frequency_unit, item_type, nominal_value,"
                                          " nominal_value_unit, top_measure_value, top_measure_value_unit,"
                                          " bottom_measure_value, bottom_measure_value_unit, scan_type,"
                                          " horizontal_scale_gear, horizontal_scale_gear_unit,"
                                          " vertical_scale_gear, vertical_scale_gear_unit, frequency_upper,"
                                          " frequency_upper_unit, output_signal_amplitude, rise_time,"
                                          " correct_rise_time, signal_type, nominal_amplitude_value,"
                                          " nominal_amplitude_value_unit, nominal_frequency_value,"
                                          " nominal_frequency_value_unit, measure_amplitude_value,"
                                          " measure_amplitude_value_unit, measure_frequency_value,"
                                          " frequency_deviation, amplitude_deviation, exceed_mark, create_time,"
                                          " update_time"
                                          " ) VALUES ("
                                          " :1, :2, :3, :4, :5,"
                                          " :6, :7,"
                                          " :8, :9,"
                                          " :10, :11, :12,"
                                          " :13, :14, :15, :16,"
                                          " :17, :18,"
                                          " :19, :20, :21, :22,"
                                          " :23, :24, :25, :26,"
                                          " :27, :28, :29,"
                                          " :30, :31, :32,"
                                          " :33, :34, :35, :36,"
                                          " :37, :38, :39,"
                                          " :40, :41, :42,"
                                          " :43, :44,"
                                          " :45, :46, :47,"
                                          " :48, :49, :50,"
                                          " :51, :52, :53,"
                                          " :54, :55,"
                                          " :56, :57,"
                                          " :58, :59,"
                                          " :60, :61, :62, :63,"
                                          " :64 );";
               saveLogToSql(ssql,&scope);
            }else {
qDebug() << "Insert data failed: " << query.lastError().text();
}

            return isSuccess;
}
//检定项-二等铂电阻
QMap<QString,QList<QStringList>>  BaseCommonApi::getDeviceMeasureItemDataResistanceThermometer(QString itemCatoryName,QString itemId,QMap<QString, QStringList> *headList)
{
    QMap<QString, QList<QStringList>> DataMapList;
    QList<QStringList> resultData;
    QStringList result;
    resultData.clear();

    QSqlQuery query;
    query.prepare(
                  " SELECT bbdmidrt.*,bbdmii.wave_even_test,bbdmii.insulate_resistance,bbdmii.angle_adjust_error,bbdmii.indication_error,"
                  " bbdmii.allow_error FROM biz_business_device_measure_item_data_resistance_thermometer bbdmidrt"
                  " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidrt.item_id"
                  " WHERE bbdmidrt.item_id = :itemId"
                  " ORDER BY bbdmidrt.update_time DESC ");
    // 将参数绑定到占位符   1753003382429302786 ->均匀性
     query.bindValue(":itemId", itemId);
     if (query.exec()) {
         while (query.next()) {
             result.clear();
             result.append(query.value("id").toString());
             result.append(query.value("item_id").toString());  //检定项id
             result.append(query.value("data_type").toString());//检定项数据类型(一个检定项中区分两个表格)(字典code)
             result.append(query.value("unit").toString());//单位(字典value)
             result.append(query.value("upper_index").toString());//指标上限
             result.append(query.value("lower_index").toString());//指标下限
             result.append(query.value("measure_range_upper").toString());//测量范围上限
             result.append(query.value("measure_range_lower").toString());//测量范围下限
             result.append(query.value("measure_range_unit").toString());//测量范围单位(字典value)
             result.append(query.value("accuracy_level").toString());//准确度等级(字典value)
             result.append(query.value("calibrated_point").toString());//校准点
             result.append(query.value("maximum_error").toString());//最大允许误差
             result.append(query.value("urel").toString());//扩展不确定度
             result.append(query.value("level").toString());//级别(字典value)
             result.append(query.value("nominal_temperature").toString());//标称温度
             result.append(query.value("nominal_value").toString());//α标称值(字典value)
             result.append(query.value("r_value").toString());//R值
             result.append(query.value("dr_dt").toString());//dR/dt
             result.append(query.value("r_tp").toString());//R*tp
             result.append(query.value("w_s").toString());//Ws
             result.append(query.value("dwst_dt").toString());//dWst/dt
             result.append(query.value("allow_error_upper").toString());//允差上限
             result.append(query.value("allow_error_lower").toString());//允差下限
             result.append(query.value("a_allow_error_upper").toString());//α允差上限
             result.append(query.value("a_allow_error_lower").toString());//α允差下限
             result.append(query.value("create_time").toString());
             result.append(query.value("update_time").toString());
             result.append(query.value("wave_even_test").toString());//波动性测试和均匀性测试(二等铂)
             result.append(query.value("insulate_resistance").toString());//绝缘电阻(二等铂)
             result.append(query.value("angle_adjust_error").toString());//角度调整误差(二等铂)
             result.append(query.value("indication_error").toString());//示值误差(二等铂)
             result.append(query.value("allow_error").toString());//允差(二等铂)
             resultData.append(result);
         }
     } else {
         qDebug() << "Query execution failed: " << query.lastError().text();
     }


     //进行检定项目列头转换
     DataMapList= GetDataReturnItemListByResistanceThermometer(itemCatoryName,resultData,DataMapList,headList);
     return DataMapList;
}
QMap<QString, QList<QStringList>> BaseCommonApi::GetDataReturnItemListByResistanceThermometer(QString itemCatoryName,QList<QStringList> ResultData,QMap<QString, QList<QStringList>> DataMapList,QMap<QString, QStringList> *HeadMapList)
{
    QList<QStringList> VolatilityList;
    QList<QStringList> UniformityList;
    if(itemCatoryName.contains("恒温槽")){
    for(const QStringList &row : ResultData)
    {
       QString VerificationItem=NULL;
       bool showUpperLimit = false;
       int num = 0;
       for(int i =0;i<16;i++){
        if (!row.isEmpty() && row[27]=="1" && row[2] == "1") {
                VerificationItem = "波动性测试";
                //添加列头
                QStringList head;
                head  <<"序号"<< "下限点"  <<"上限点" <<"单位"<<"示值1"<<"示值2"<<"示值3"<<"示值4"<<"示值5"
                        <<"示值6"<<"示值7"<<"示值8"<<"示值9"<<"示值10"<<"示值11"<<"示值12"<<"示值13"<<"示值14"<<"示值15"
                     <<"最大值"<<"最小值"<<"波动性" ;
                HeadMapList->insert(VerificationItem,head);
                //添加数据
                QStringList Data;
                Data.append(row[0]);  //ID
                Data.append(showUpperLimit ?  "": row[5]);//下限点
                Data.append(showUpperLimit ? row[4] : "");  // 上限点
                Data.append(row[3]);//单位
                Data.append("");//示值1
                Data.append("");//示值2
                Data.append("");//示值3
                Data.append("");//示值4
                Data.append("");//示值5
                Data.append("");//示值6
                Data.append("");//示值7
                Data.append("");//示值8
                Data.append("");//示值9
                Data.append("");//示值10
                Data.append("");//示值11
                Data.append("");//示值12
                Data.append("");//示值13
                Data.append("");//示值14
                Data.append("");//示值15
                Data.append("");//最大值
                Data.append("");//最小值
                Data.append("");//波动性
                VolatilityList.append(Data);

         }else if(!row.isEmpty() && row[27]=="1" && row[2] =="2"){
            int d_num = 1;
            d_num = showUpperLimit ? num++ : i;
             QChar character('A' + d_num);
            VerificationItem = "均匀性测试";
            //添加列头
            QStringList head;
            head  <<"序号"<<"单位"<<"下限点"<<"上限点"<<"位置"
                 <<"示值ROA1"<<"示值RA1"<<"RA2"<<"ROA2"<<"ROA3"<<"RA3"<<"RA4"<<"ROA4"<<"ROA均值"<<"RA均值"<<"上水平面温差"
                <<"下水平面温差"<<"水平最大温差"<<"工作区域最大温差";
            HeadMapList->insert(VerificationItem,head);
            //添加数据
            QStringList Data;

            Data.append(row[0]);  //ID
            Data.append(row[3]);  //单位
            Data.append(showUpperLimit ?  "": row[5]);//下限点
            Data.append(showUpperLimit ? row[4] : "");  // 上限点
            Data.append(character);//位置
            Data.append("");//示值ROA1
            Data.append("");//示值RA1
            Data.append("");//RA2
            Data.append("");//ROA2
            Data.append("");//ROA3
            Data.append("");//RA3
            Data.append("");//RA4
            Data.append("");//ROA4
            Data.append("");//ROA均值
            Data.append("");//RA均值
            Data.append("");//上水平面温差
            Data.append("");//下水平面温差
            Data.append("");//水平最大温差
            Data.append("");//工作区域最大温差
            UniformityList.append(Data);
        }
        if (i >= 7) {
            showUpperLimit = true;
        }
     }
 }
 }
    if(VolatilityList.count()!=0){
        DataMapList.insert("波动性测试",VolatilityList);
    };
    if(UniformityList.count()!=0){
        DataMapList.insert("均匀性测试",UniformityList);
    };
    return  DataMapList;
}

QMap<QString,QList<QStringList>> GetDataReturnItemListByResistanceThermometerToVolatility(QString itemCatoryName,QList<QStringList> ResultData,QMap<QString, QList<QStringList>> DataMapList,QMap<QString, QStringList> *HeadMapList)
{
    QList<QStringList> UpperList;
    QList<QStringList> LowerList;
    for(const QStringList &row : ResultData)
        for(int i =0;i<8;i++){
    {
        QString VerificationItem=NULL;
        VerificationItem = "波动性测试";
        //添加列头
        QStringList head;
        head  <<"序号"<<"下限点"<<"单位"<<"示值1"<<"示值2"<<"示值3"<<"示值4"<<"示值5"
                <<"示值6"<<"示值7"<<"示值8"<<"示值9"<<"示值10"<<"示值11"<<"示值12"<<"示值13"<<"示值14"<<"示值15"
             <<"最大值"<<"最小值"<<"波动性" ;
        HeadMapList->insert(VerificationItem,head);
        //添加数据
        QStringList Data;
    }
 }
}


//结果保存-二等铂电阻
bool BaseCommonApi::InsertDeviceMeasureDataResistanceThermometer(DeviceMeasureDataResistanceThermometer thermometer)
{
    QSqlQuery query;
    query.prepare("INSERT INTO biz_business_device_measure_data_resistance_thermometer ("
                  " id, data_id, data_type, data_category, upper_lower_point, location, unit,"
                  " one_value, two_value, three_value, four_value, five_value, six_value, seven_value,"
                  " eight_value, nine_value, ten_value, eleven_value, twelve_value, thirteen_value,"
                  " fourteen_value, fifteen_value, max_value, min_value, volatility,"
                  " upper_temperature_different, lower_temperature_different,"
                  " max_horizontal_temperature_different, max_work_temperature_different,"
                  " calibrated_point, indicating_value_forward_stroke,"
                  " indicating_value_reverse_stroke, measure_indication_value_forward_stroke,"
                  " measure_indication_value_reverse_stroke, indicating_error_forward_stroke,"
                  " indicating_error_reverse_stroke, maximum_error, urel, rank_level,"
                  " nominal_temperature, item, allow_error_lower, allow_error_upper,"
                  " measure_value, create_time, update_time"
                  " ) VALUES ("
                  " :id, :data_id, :data_type, :data_category, :upper_lower_point, :location, :unit,"
                  " :one_value, :two_value, :three_value, :four_value, :five_value, :six_value, :seven_value,"
                  " :eight_value, :nine_value, :ten_value, :eleven_value, :twelve_value, :thirteen_value,"
                  " :fourteen_value, :fifteen_value, :max_value, :min_value, :volatility,"
                  " :upper_temperature_different, :lower_temperature_different,"
                  " :max_horizontal_temperature_different, :max_work_temperature_different,"
                  " :calibrated_point, :indicating_value_forward_stroke,"
                  " :indicating_value_reverse_stroke, :measure_indication_value_forward_stroke,"
                  " :measure_indication_value_reverse_stroke, :indicating_error_forward_stroke,"
                  " :indicating_error_reverse_stroke, :maximum_error, :urel, :rank_level,"
                  " :nominal_temperature, :item, :allow_error_lower, :allow_error_upper,"
                  " :measure_value, :create_time, :update_time );");
        QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
        query.bindValue(":id", thermometer.id);
        query.bindValue(":data_id", thermometer.data_id);
        query.bindValue(":data_type", thermometer.data_type);
        query.bindValue(":data_category", thermometer.data_category);
        query.bindValue(":upper_lower_point", thermometer.upper_lower_point);
        query.bindValue(":location", thermometer.location);
        query.bindValue(":unit", thermometer.unit);
        query.bindValue(":one_value", thermometer.one_value);
        query.bindValue(":two_value", thermometer.two_value);
        query.bindValue(":three_value", thermometer.three_value);
        query.bindValue(":four_value", thermometer.four_value);
        query.bindValue(":five_value", thermometer.five_value);
        query.bindValue(":six_value", thermometer.six_value);
        query.bindValue(":seven_value", thermometer.seven_value);
        query.bindValue(":eight_value", thermometer.eight_value);
        query.bindValue(":nine_value", thermometer.nine_value);
        query.bindValue(":ten_value", thermometer.ten_value);
        query.bindValue(":eleven_value", thermometer.eleven_value);
        query.bindValue(":twelve_value", thermometer.twelve_value);
        query.bindValue(":thirteen_value", thermometer.thirteen_value);
        query.bindValue(":fourteen_value", thermometer.fourteen_value);
        query.bindValue(":fifteen_value", thermometer.fifteen_value);
        query.bindValue(":max_value", thermometer.max_value);
        query.bindValue(":min_value", thermometer.min_value);
        query.bindValue(":volatility", thermometer.volatility);
        query.bindValue(":upper_temperature_different", thermometer.upper_temperature_different);
        query.bindValue(":lower_temperature_different", thermometer.lower_temperature_different);
        query.bindValue(":max_horizontal_temperature_different", thermometer.max_horizontal_temperature_different);
        query.bindValue(":max_work_temperature_different", thermometer.max_work_temperature_different);
        query.bindValue(":calibrated_point", thermometer.calibrated_point);
        query.bindValue(":indicating_value_forward_stroke", thermometer.indicating_value_forward_stroke);
        query.bindValue(":indicating_value_reverse_stroke", thermometer.indicating_value_reverse_stroke);
        query.bindValue(":measure_indication_value_forward_stroke", thermometer.measure_indication_value_forward_stroke);
        query.bindValue(":measure_indication_value_reverse_stroke", thermometer.measure_indication_value_reverse_stroke);
        query.bindValue(":indicating_error_forward_stroke", thermometer.indicating_error_forward_stroke);
        query.bindValue(":indicating_error_reverse_stroke", thermometer.indicating_error_reverse_stroke);
        query.bindValue(":maximum_error", thermometer.maximum_error);
        query.bindValue(":urel", thermometer.urel);
        query.bindValue(":rank_level", thermometer.rank_level);
        query.bindValue(":nominal_temperature", thermometer.nominal_temperature);
        query.bindValue(":item", thermometer.item);
        query.bindValue(":allow_error_lower", thermometer.allow_error_lower);
        query.bindValue(":allow_error_upper", thermometer.allow_error_upper);
        query.bindValue(":measure_value", thermometer.measure_value);
        query.bindValue(":create_time", currentDateTime);
        query.bindValue(":update_time", currentDateTime);
        bool isSuccess = query.exec();
        if (isSuccess) {
           QString ssql =  "INSERT INTO biz_business_device_measure_data_resistance_thermometer ("
                              " id, data_id, data_type, data_category, upper_lower_point, location, unit,"
                              " one_value, two_value, three_value, four_value, five_value, six_value, seven_value,"
                              " eight_value, nine_value, ten_value, eleven_value, twelve_value, thirteen_value,"
                              " fourteen_value, fifteen_value, max_value, min_value, volatility,"
                              " upper_temperature_different, lower_temperature_different,"
                              " max_horizontal_temperature_different, max_work_temperature_different,"
                              " calibrated_point, indicating_value_forward_stroke,"
                              " indicating_value_reverse_stroke, measure_indication_value_forward_stroke,"
                              " measure_indication_value_reverse_stroke, indicating_error_forward_stroke,"
                              " indicating_error_reverse_stroke, maximum_error, urel, rank_level,"
                              " nominal_temperature, item, allow_error_lower, allow_error_upper,"
                              " measure_value, create_time, update_time"
                              " ) VALUES ("
                              " :1, :2, :3, :4, :5, :6 :7,"
                              " :8, :9, :10, :11, :12, :13, :14,"
                              " :15, :16, :17, :18, :19, :20,"
                              " :21, :22, :23, :24, :25,"
                              " :26, :27,"
                              " :28, :29,"
                              " :30, :31,"
                              " :32, :33,"
                              " :34, :35,"
                              " :36, :37, :38, :39,"
                              " :40, :41, :42, :43,"
                              " :44, :45, :46 );";
        }else {
qDebug() << "Insert data failed: " << query.lastError().text();
}

        return isSuccess;
}
//【查询】结果表 二等铂电阻
QList<QStringList> BaseCommonApi::getDeviceMeasureDataResistanceThermometer(QString data_id,QStringList *HeadList)
{
    //待实现
}
//【查询】检定项-频谱分析仪
QMap<QString,QList<QStringList>> BaseCommonApi::getDeviceMeasureItemDataSpectrumAnalyzer(QString itemCatoryName,QString itemId,QMap<QString, QStringList> *headList)
{
    QMap<QString, QList<QStringList>> DataMapList;
    QList<QStringList> resultData;
    QStringList result;
    resultData.clear();

    QSqlQuery query;
    query.prepare("SELECT bbdmidsa.*,bbdmii.frequency_display,bbdmii.sweep_width as sweep_width_demo,bbdmii.middle_frequency_width,"
                  " bbdmii.middle_conversion_deviation,bbdmii.reference_level,bbdmii.vertical_scale as vertical_scale_demo,bbdmii.input_frequency,"
                  " bbdmii.average_noise_level,bbdmii.harmonic_distortion,bbdmii.input_attenuation,bbdmii.gain_compression,bbdmii.calibrating_signal "
                  " FROM biz_business_device_measure_item_data_spectrum_analyzer bbdmidsa "
                  " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidsa.item_id"
                  "  WHERE bbdmidsa.item_id =  :itemId "
                  " ORDER BY bbdmidsa.update_time DESC");
    query.bindValue(":itemId", itemId);
    if (query.exec()) {
        while (query.next()) {
            result.clear();
            result.append(query.value("id").toString());
            result.append(query.value("item_id").toString());  //检定项id
            result.append(query.value("data_type").toString());//检定项数据类型(一个检定项中区分两个表格)(字典code)
            result.append(query.value("nominal_value").toString());//标称值
            result.append(query.value("unit").toString());//标称值单位
            result.append(query.value("sweep_width").toString());//扫频宽度     5
            result.append(query.value("sweep_width_unit").toString());//扫频宽度单位
            result.append(query.value("horizontal_resolution").toString());//水平分辨率
            result.append(query.value("horizontal_resolution_unit").toString());//水平分辨率单位
            result.append(query.value("resolution_bandwidth").toString());//分辨率带宽
            result.append(query.value("resolution_bandwidth_unit").toString());//分辨率带宽单位
            result.append(query.value("frequency").toString());//频率
            result.append(query.value("frequency_unit").toString());//频率单位
            result.append(query.value("amplitude").toString());//幅度
            result.append(query.value("amplitude_unit").toString());//幅度单位
            result.append(query.value("frequency_reference_accuracy").toString());//频率基准精度(计算技术指标使用(频率显示))
            result.append(query.value("value_one").toString());//数值1(不带%,计算技术指标使用(频率显示))/数值(不带单位,扫频宽度/中频带宽/中频带宽转换偏差参考电平/垂直刻度/输入频响/输入衰减/1dB增益压缩点)
            result.append(query.value("value_two").toString());//数值2(不带%,计算技术指标使用(频率显示))/中频带宽
            result.append(query.value("value_three").toString());//数值3(不带Hz,计算技术指标使用(频率显示))
            result.append(query.value("value_four").toString());//数值4(计算技术指标使用(频率显示))
            result.append(query.value("technical_index").toString());//技术指标(存正负号/存符号(1dB增益压缩点))
            result.append(query.value("technical_index_unit").toString());//技术指标单位
            result.append(query.value("technical_index_left").toString());//技术指标左(中频带宽)
            result.append(query.value("technical_index_right").toString());//技术指标右(中频带宽)
            result.append(query.value("reference_point").toString());//是否为参考点(1/0)
            result.append(query.value("standard_attenuator_attenuation").toString());//标准衰减器衰减量
            result.append(query.value("standard_attenuator_attenuation_unit").toString());//标准衰减器衰减量单位
            result.append(query.value("signal_source_amplitude").toString());//信号源幅度
            result.append(query.value("signal_source_amplitude_unit").toString());//信号源幅度单位
            result.append(query.value("vertical_scale").toString());//垂直刻度
            result.append(query.value("start_frequency").toString());//起始频率   30
            result.append(query.value("start_frequency_unit").toString());//起始频率单位
            result.append(query.value("end_frequency").toString());//终止频率
            result.append(query.value("end_frequency_unit").toString());//终止频率单位
            result.append(query.value("corrected_value").toString());//修正值
            result.append(query.value("corrected_value_unit").toString());//修正值单位
            result.append(query.value("upper_index").toString());//指标上限
            result.append(query.value("upper_index_unit").toString());//指标上限单位
            result.append(query.value("input_attenuator").toString());//输入衰减器
            result.append(query.value("input_attenuator_unit").toString());//输入衰减器单位
            result.append(query.value("spectrum_level").toString());//参考电平
            result.append(query.value("spectrum_level_unit").toString());//参考电平单位
            result.append(query.value("rbw_value").toString());//RBW
            result.append(query.value("rbw_value_unit").toString());//RBW单位
            result.append(query.value("vbw_value").toString());//VBW
            result.append(query.value("vbw_value_unit").toString());//VBW单位
            result.append(query.value("upper_index_twice").toString());//二次谐波失真指标上限
            result.append(query.value("upper_index_twice_unit").toString());//二次谐波失真指标上限单位
            result.append(query.value("upper_index_thrice").toString());//三次谐波失真指标上限
            result.append(query.value("upper_index_thrice_unit").toString());//三次谐波失真指标上限单位
            result.append(query.value("upper_index_quartic").toString());//四次谐波失真指标上限
            result.append(query.value("upper_index_quartic_unit").toString());//四次谐波失真指标上限单位
            result.append(query.value("type_value").toString());//类型(校准信号)
            result.append(query.value("create_time").toString());
            result.append(query.value("update_time").toString());
            result.append(query.value("frequency_display").toString());//频率显示(频谱分析仪)    55
            result.append(query.value("sweep_width_demo").toString());//扫频宽度(频谱分析仪)
            result.append(query.value("middle_frequency_width").toString());//中频宽度(频谱分析仪)
            result.append(query.value("middle_conversion_deviation").toString());//中频带宽转换偏差(频谱分析仪)
            result.append(query.value("reference_level").toString());//参考电平(频谱分析仪)
            result.append(query.value("vertical_scale_demo").toString());//垂直刻度(频谱分析仪)
            result.append(query.value("input_frequency").toString());//输入频响(频谱分析仪)
            result.append(query.value("average_noise_level").toString());//平均噪声电平(频谱分析仪)
            result.append(query.value("harmonic_distortion").toString());//谐波失真(频谱分析仪)/(低频信号源)/(S参数)
            result.append(query.value("input_attenuation").toString());//输入衰减(频谱分析仪)
            result.append(query.value("gain_compression").toString());//1dB增益压缩点(频谱分析仪)
            result.append(query.value("calibrating_signal").toString());//校准信号
            resultData.append(result);
        }
    } else {
        qDebug() << "Query execution failed: " << query.lastError().text();
    }
    //进行检定项目列头转换
    DataMapList= GetDataReturnItemListBySpectrumAnalyzer(itemCatoryName,resultData,DataMapList,headList);
    return DataMapList;
}
QMap<QString, QList<QStringList>> BaseCommonApi::GetDataReturnItemListBySpectrumAnalyzer(QString itemCatoryName,QList<QStringList> ResultData,QMap<QString, QList<QStringList>> DataMapList,QMap<QString, QStringList> *HeadMapList)
{
    QList<QStringList> FrequencyDisplayList;
    QList<QStringList> SweepWidthList;
    QList<QStringList> IntermediateFrequencyBandwidthList;
    QList<QStringList> ConversionDeviationList;
    QList<QStringList> ReferencelevelList;
    QList<QStringList> VerticalScaleList;
    QList<QStringList> InputFrequencyResponseList;
    QList<QStringList> AverageNoiselevelList;
    QList<QStringList> HarmonicDistortionList;
    QList<QStringList> InputAttenuationList;
    QList<QStringList> GainCompressionPointList;
    QList<QStringList> CalibrationSignalList;
    if(itemCatoryName.contains("频谱分析仪")){
    for(const QStringList &row : ResultData)
    {
       QString VerificationItem=NULL;
        if (!row.isEmpty() && row[55]=="1" && row[2] == "1") {
                VerificationItem = "频率显示";
                //添加列头
                QStringList head;
                head  <<"序号"<<"检定项目"<<"标称值"<<"扫频宽度"<<"分辨力带宽"<<"水平分辨率"<<"测量值1"<<"测量值2"<<"测量值3"
                        <<"指标下限"<<"均值"<<"指标上限"<<"结论";
                HeadMapList->insert(VerificationItem,head);
                //添加数据
                QStringList Data;
                Data.append(row[0]);  //ID
                Data.append(row[2]);  //检定项目
                Data.append(row[3]+ row[4]);//标称值
//                Data.append(row[4]);//标称值单位    需要隐藏
                Data.append(row[5] + row[6]);//扫频宽度
                Data.append(row[9] + row[10]);//分辨率带宽
                Data.append(row[7] + row[8]);//水平分辨率
                Data.append("");//测量值1
                Data.append("");//测量值2
                Data.append("");//测量值3
                double index_lower = row[3].toInt()-(row[3].toInt()*row[15].toDouble()+row[16].toDouble()* 0.01  * row[5].toInt()+ row[17].toDouble() * 0.01 * row[9].toInt() + row[18].toDouble() + row[19].toDouble() * row[7].toInt());
                Data.append(QString::number(index_lower) + row[4]);//指标下限
                Data.append("");//均值
                double index_upper = row[3].toInt() + (row[3].toInt() * row[15].toDouble() + row[16].toDouble() * 0.01 * row[5].toInt() +row[17].toDouble() * 0.01 * row[9].toInt() + row[18].toDouble() + row[19].toDouble() * row[7].toInt());
                Data.append(QString::number(index_upper) + row[4]);//指标上限
                Data.append("");//结论
                FrequencyDisplayList.append(Data);
        }else if(!row.isEmpty() && row[56]=="1" && row[2] =="2"){
            VerificationItem = "扫频宽度";
            //添加列头
            QStringList head;
            head  <<"序号"<<"检定项目"<<"标称值"<<"水平分辨率"<<"fl1"
                 <<"fr1"<<"fl2"<<"fr2"<<"fl3"<<"fr3"<<"指标下限"<<"均值"<<"指标上限"<<"结论";
            HeadMapList->insert(VerificationItem,head);
            //添加数据
            QStringList Data;
            Data.append(row[0]);  //ID
            Data.append(row[2]);  //检定项目
            Data.append(row[3]+ row[4]);//标称值
//            Data.append(row[4]);//标称值单位  需要隐藏
            Data.append(row[7] + row[8]);//水平分辨率
            Data.append("");//fl1
            Data.append("");//fr1
            Data.append("");//fl2
            Data.append("");//fr2
            Data.append("");//fl3
            Data.append("");//fr3
            double index_lower = row[3].toInt() - (row[3].toInt() * row[15].toDouble() * 0.01 + row[7].toInt());
            QString index_lowerr_num = formatDoubleWithEffectiveDigits(index_lower,5);
            Data.append(index_lowerr_num+ row[4]);//指标下限
            Data.append("");//均值
            double index_upper = row[3].toInt() + (row[3].toInt() * row[15].toDouble() * 0.01 + row[7].toInt());
            QString index_upper_num = formatDoubleWithEffectiveDigits(index_upper,5);
            Data.append(index_upper_num + row[4]);//指标上限
            Data.append("");//结论
            SweepWidthList.append(Data);
        }else if(!row.isEmpty() && row[57]=="1" && row[2] =="3"){
            VerificationItem = "中频带宽";
            //添加列头
            QStringList head;
            head  <<"序号"<<"检定项目"<<"标称值"<<"fl1"
                 <<"fr1"<<"△f1"<<"fl2"<<"fr2"<<"△f2"<<"fl3"<<"fr3"<<"△f3"<<"指标下限"<<"均值"<<"指标上限"<<"结论";
            HeadMapList->insert(VerificationItem,head);
            //添加数据
            QStringList Data;
            Data.append(row[0]);  //ID
            Data.append(row[2]);  //检定项目
            Data.append(row[3]+ row[4]);//标称值
//            Data.append(row[4]);//标称值单位  需要隐藏
            Data.append("");//fl1
            Data.append("");//fr1
            Data.append("");//△f1
            Data.append("");//fl2
            Data.append("");//fr2
            Data.append("");//△f2
            Data.append("");//fl3
            Data.append("");//fr3
            Data.append("");//△f3
            double index_lower = row[3].toDouble() - (row[3].toDouble() * row[15].toDouble() * 0.01);
            QString str_index_lower = formatDoubleWithDecimalPlaces(index_lower,2);
            Data.append(str_index_lower + row[4]);//指标下限
            Data.append("");//均值
            double index_upper = row[3].toInt() + (row[3].toInt() * row[15].toDouble() * 0.01);
            QString index_upper_num = formatDoubleWithDecimalPlaces(index_upper,2);
            Data.append(index_upper_num + row[4]);//指标上限
            Data.append("");//结论
            IntermediateFrequencyBandwidthList.append(Data);
        }else if(!row.isEmpty() && row[58]=="1" && row[2] =="4"){
            VerificationItem = "中频带宽转换偏差";
            //添加列头
            QStringList head;
            head  <<"序号"<<"检定项目"<<"中频带宽"<<"测量值"<<"指标下限"
                 <<"转换偏差"<<"指标上限"<<"结论";
            HeadMapList->insert(VerificationItem,head);
            //添加数据
            QStringList Data;
            Data.append(row[0]);  //ID
            Data.append(row[2]);  //检定项目
            Data.append(row[3] + row[4]);//中频带宽
            Data.append("");//测量值
            QString index_lower = row[20].split("±")[1];
            Data.append("-" + index_lower+ row[21]);//指标下限
            Data.append("");//转换偏差
            Data.append("+" +index_lower+ row[21]);//指标上限
            Data.append("");//结论
            ConversionDeviationList.append(Data);
        }else if(!row.isEmpty() && row[59]=="1" && row[2] =="5"){
            VerificationItem = "参考电平";
            //添加列头
            QStringList head;
            head  <<"序号"<<"检定项目"<<"标称值"<<"标准衰减器衰减量"<<"信号源幅度"
                 <<"指标下限"<<"测量值"<<"指标上限"<<"结论";
            HeadMapList->insert(VerificationItem,head);
            //添加数据
            QStringList Data;
            Data.append(row[0]);  //ID
            Data.append(row[2]);  //检定项目
            Data.append(row[3] + row[4]);//标称值
            Data.append(row[25] + row[26]);//标准衰减器衰减量
            Data.append(row[27] + row[28]);//信号源幅度
            QString index_lower = row[20].split("±")[1];
            Data.append(QString::number(row[3].toDouble() - index_lower.toDouble()) + row[4]);//指标下限
            Data.append("");//测量值
            Data.append(QString::number(row[3].toDouble() + index_lower.toDouble()) + row[4]);//指标上限
            Data.append("");//结论
            ReferencelevelList.append(Data);
        }else if(!row.isEmpty() && row[60]=="1" && row[2] =="6"){
            VerificationItem = "垂直刻度";
            //添加列头
            QStringList head;
            head  <<"序号"<<"检定项目"<<"标称值"<<"垂直刻度"<<"标准衰减器衰减量"<<"信号源幅度"
                 <<"指标下限"<<"测量值"<<"指标上限"<<"结论";
            HeadMapList->insert(VerificationItem,head);
            //添加数据
            QStringList Data;
            Data.append(row[0]);  //ID
            Data.append(row[2]);  //检定项目
            Data.append(row[3] + row[4]);//标称值
            Data.append(row[29]);//垂直刻度
            Data.append(row[25] + row[26]);//标准衰减器衰减量
            Data.append(row[27] + row[28]);//信号源幅度
            QString index_lower = row[20].split("±")[1];
            Data.append(QString::number(row[3].toDouble() - index_lower.toDouble()) + row[4]);//指标下限
            Data.append("");//测量值
            Data.append(QString::number(row[3].toDouble() + index_lower.toDouble()) + row[4]);//指标上限
            Data.append("");//结论
            VerticalScaleList.append(Data);
        }else if(!row.isEmpty() && row[61]=="1" && row[2] =="7"){
            VerificationItem = "输入频响";
            //添加列头
            QStringList head;
            head  <<"序号"<<"检定项目"<<"频率"<<"测量值1"<<"测量值2"<<"测量值3"
                 <<"均值"<<"指标下限"<<"输入频响"<<"指标上限"<<"结论";
            HeadMapList->insert(VerificationItem,head);
            //添加数据
            QStringList Data;
            Data.append(row[0]);  //ID
            Data.append(row[2]);  //检定项目
            Data.append(row[11] + row[12]);//频率
            Data.append("");//测量值1
            Data.append("");//测量值2
            Data.append("");//测量值3
            Data.append("");//均值
            QString index_lower = row[20].split("±")[1];
            Data.append("-" + index_lower + row[21]);//指标下限
            Data.append("");//输入频响
            Data.append("+" + index_lower + row[21]);//指标上限
            Data.append("");//结论
            InputFrequencyResponseList.append(Data);
        }else if(!row.isEmpty() && row[62]=="1" && row[2] =="8"){
            VerificationItem = "平均噪声电平";
            //添加列头
            QStringList head;
            head  <<"序号"<<"检定项目"<<"起始频率"<<"终止频率"<<"测量值"<<"修正值"<<"修正后结果"
                 <<"指标上限"<<"结论";
            HeadMapList->insert(VerificationItem,head);
            //添加数据
            QStringList Data;
            Data.append(row[0]);  //ID
            Data.append(row[2]);  //检定项目
            Data.append(row[30] + row[31]);//起始频率
            Data.append(row[32] + row[33]);//终止频率
            Data.append("");//测量值
            Data.append(row[34] + row[35]);//修正值
            Data.append("");//修正后结果
            Data.append(row[36] + row[37]);//指标上限
            Data.append("");//结论
            AverageNoiselevelList.append(Data);
        }else if(!row.isEmpty() && row[63]=="1" && row[2] =="9"){
            VerificationItem = "谐波失真";
            //添加列头
            QStringList head;
            head  <<"序号"<<"检定项目"<<"频率"<<"基波幅度"<<"二次谐波幅度"<<"二次谐波失真"<<"三次谐波幅度"<<"三次谐波失真"
                 <<"四次谐波幅度"<<"四次谐波失真"<<"二次谐波失真指标上限"<<"三次谐波失真指标上限"<<"四次谐波失真指标上限"<<"结论";
            HeadMapList->insert(VerificationItem,head);
            //添加数据
            QStringList Data;
            Data.append(row[0]);  //ID
            Data.append(row[2]);  //检定项目
            Data.append(row[11] + row[12]);//频率
            Data.append("");//基波幅度
            Data.append("");//二次谐波幅度
            Data.append("");//二次谐波失真
            Data.append("");//三次谐波幅度
            Data.append("");//三次谐波失真
            Data.append("");//四次谐波幅度
            Data.append("");//四次谐波失真
            Data.append(row[46] +  row[47]);//二次谐波失真指标上限
            Data.append(row[48] + row[49]);//三次谐波失真指标上限
            Data.append(row[50] + row[51]);//四次谐波失真指标上限
            Data.append("");//结论
            HarmonicDistortionList.append(Data);
        }else if(!row.isEmpty() && row[64]=="1" && row[2] =="10 "){
            VerificationItem = "输入衰减";
            //添加列头
            QStringList head;
            head  <<"序号"<<"检定项目"<<"频率"<<"测量值1"<<"测量值2"<<"测量值3"<<"均值"<<"指标下限"
                 <<"输入频响"<<"指标上限"<<"结论";
            HeadMapList->insert(VerificationItem,head);
            //添加数据
            QStringList Data;
            Data.append(row[0]);  //ID
            Data.append(row[2]);  //检定项目
            Data.append(row[11] + row[12]);//频率
            Data.append("");//测量值1
            Data.append("");//测量值2
            Data.append("");//测量值3
            Data.append("");//均值
            QString index_lower = row[20].split("±")[1];
            Data.append("-" + index_lower + row[21]);//指标下限
            Data.append("");//输入频响
            Data.append("+" + index_lower + row[21]);//指标上限
            Data.append("");//结论
            InputAttenuationList.append(Data);
        }else if(!row.isEmpty() && row[65]=="1" && row[2] =="11 "){
            VerificationItem = "1db增益压缩点";
            //添加列头
            QStringList head;
            head  <<"序号"<<"检定项目"<<"输入衰减"<<"参考电平"<<"测量值"<<"增益压缩"<<"技术指标"<<"结论";
            HeadMapList->insert(VerificationItem,head);
            //添加数据
            QStringList Data;
            Data.append(row[0]);  //ID
            Data.append(row[2]);  //检定项目
            Data.append(row[38] + row[39]);//输入衰减
            Data.append(row[40] + row[41]);//参考电平
            Data.append("");//测量值
            Data.append("");//增益压缩
            Data.append(row[20] + row[21]);//技术指标
            Data.append("");//结论
            GainCompressionPointList.append(Data);
        }else if(!row.isEmpty() && row[66]=="1" && row[2] =="12 "){
            VerificationItem = "校准信号";
            //添加列头
            QStringList head;
            head  <<"序号"<<"检定项目"<<"类型"<<"标称值"<<"测量值1"<<"测量值2"<<"测量值3"<<"指标下限"
                 <<"测量结果"<<"指标上限"<<"结论";
            HeadMapList->insert(VerificationItem,head);
            //添加数据
            QStringList Data;
            Data.append(row[0]);  //ID
            Data.append(row[2]);  //检定项目
            Data.append(row[52]);//类型
            Data.append(row[3] + row[4]);//标称值
            Data.append("");//测量值1
            Data.append("");//测量值2
            Data.append("");//测量值3
            QString index_lower = row[20].split("±")[1];
            Data.append(QString::number(row[3].toDouble() - index_lower.toDouble()) + row[4]);//指标下限
            Data.append("");//测量结果
            Data.append(QString::number(row[3].toDouble() + index_lower.toDouble()) + row[4]);//指标上限
            Data.append("");//结论
            CalibrationSignalList.append(Data);
        }
     }
 }
    if(FrequencyDisplayList.count()!=0){
        DataMapList.insert("频率显示",FrequencyDisplayList);
    };
    if(SweepWidthList.count()!=0){
        DataMapList.insert("扫频宽度",SweepWidthList);
    };
    if(IntermediateFrequencyBandwidthList.count()!=0){
        DataMapList.insert("中频带宽",IntermediateFrequencyBandwidthList);
    };
    if(ConversionDeviationList.count()!=0){
        DataMapList.insert("中频带宽转换偏差",ConversionDeviationList);
    };
    if(ReferencelevelList.count()!=0){
        DataMapList.insert("参考电平",ReferencelevelList);
    };
    if(VerticalScaleList.count()!=0){
        DataMapList.insert("垂直刻度",VerticalScaleList);
    };
    if(InputFrequencyResponseList.count()!=0){
        DataMapList.insert("输入频响",InputFrequencyResponseList);
    };
    if(AverageNoiselevelList.count()!=0){
        DataMapList.insert("平均噪声电平",AverageNoiselevelList);
    };
    if(HarmonicDistortionList.count()!=0){
        DataMapList.insert("谐波失真",HarmonicDistortionList);
    };
    if(InputAttenuationList.count()!=0){
        DataMapList.insert("输入衰减",InputAttenuationList);
    };
    if(GainCompressionPointList.count()!=0){
        DataMapList.insert("1db增益压缩点",GainCompressionPointList);
    };
    if(CalibrationSignalList.count()!=0){
        DataMapList.insert("校准信号",CalibrationSignalList);
    };
    return  DataMapList;
}

//保留5位小数,参数1:值,参数2:保留几位有效数字
QString BaseCommonApi::formatDoubleWithEffectiveDigits(double value, int effectiveDigits) {
    // 转换 double 为 QString 并保留足够的位数来避免精度损失
    QString str = QString::number(value, 'g', effectiveDigits + 6); // 'g' 格式表示使用最短的表示形式

    // 移除尾部的零和小数点后的零(如果它们存在的话)
    str.remove(QRegExp("0+$"));
    if (str.endsWith('.')) {
        str.chop(1); // 移除尾部的点
    }

    // 确保至少有一位数字在小数点后面(如果原始数字是小数)
    if (str.contains('.') && str.indexOf('.') == str.length() - 1) {
        str.append('0');
    }

    return str;
}
//保留小数点后几位
QString BaseCommonApi::formatDoubleWithDecimalPlaces(double value, int decimalPlaces) {

    return QString::number(value, 'f', decimalPlaces); // 使用固定点表示法,并指定小数位数

}
//【结果保存】频谱分析仪
bool BaseCommonApi::InsertDeviceMeasureDataSpectrumAnalyzer(DeviceMeasureDataSpectrumAnalyzer analyzer)
{
    QSqlQuery query;
    query.prepare("INSERT INTO biz_business_device_measure_data_spectrum_analyzer "
                  " (id, data_id, data_type, nominal_value, unit, sweep_width, sweep_width_unit, horizontal_resolution, horizontal_resolution_unit,"
                  " resolution_bandwidth, resolution_bandwidth_unit, one_value, two_value, three_value, four_value, five_value, six_value, seven_value,"
                  " eight_value, nine_value, ten_value, upper_index_twice, upper_index_twice_unit, upper_index_thrice, upper_index_thrice_unit, "
                  " upper_index_quartic, upper_index_quartic_unit, lower_index, lower_index_unit, average_value, upper_index, upper_index_unit, "
                  " conclusion, convert_deviation, lower_convert_deviation, upper_convert_deviation, standard_attenuator_attenuation, "
                  " standard_attenuator_attenuation_unit, signal_source_amplitude, signal_source_amplitude_unit, vertical_scale, frequency, "
                  " frequency_unit, input_frequency, start_frequency, start_frequency_unit, end_frequency, end_frequency_unit, revised_result, "
                  " input_attenuator, input_attenuator_unit, input_attenuator_conversion_effect, spectrum_level, spectrum_level_unit, gain_compression, "
                  " exceed_mark, exceed_mark_one, exceed_mark_two, measure_result, measure_result_unit, technical_index, technical_index_left, "
                  " technical_index_right, corrected_value, type_value, create_time, update_time ) VALUES ( :id, :data_id, :data_type, :nominal_value, "
                  " :unit, :sweep_width, :sweep_width_unit, :horizontal_resolution, :horizontal_resolution_unit, :resolution_bandwidth, :resolution_bandwidth_unit,"
                  " :one_value, :two_value, :three_value, :four_value, :five_value, :six_value, :seven_value, :eight_value, :nine_value, :ten_value, :upper_index_twice,"
                  " :upper_index_twice_unit, :upper_index_thrice, :upper_index_thrice_unit, :upper_index_quartic, :upper_index_quartic_unit, :lower_index, "
                  " :lower_index_unit, :average_value, :upper_index, :upper_index_unit, :conclusion, :convert_deviation, :lower_convert_deviation,"
                  " :upper_convert_deviation, :standard_attenuator_attenuation, :standard_attenuator_attenuation_unit, :signal_source_amplitude, "
                  " :signal_source_amplitude_unit, :vertical_scale, :frequency, :frequency_unit, :input_frequency, :start_frequency, :start_frequency_unit, "
                  " :end_frequency, :end_frequency_unit, :revised_result, :input_attenuator, :input_attenuator_unit, :input_attenuator_conversion_effect, "
                  " :spectrum_level, :spectrum_level_unit, :gain_compression, :exceed_mark, :exceed_mark_one, :exceed_mark_two, :measure_result, "
                  " :measure_result_unit, :technical_index, :technical_index_left, :technical_index_right, :corrected_value, :type_value, :create_time, "
                  " :update_time );");
    QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
    query.bindValue(":id", analyzer.id);
    query.bindValue(":data_id", analyzer.data_id);
    query.bindValue(":data_type", analyzer.data_type);
    query.bindValue(":nominal_value", analyzer.nominal_value);
    query.bindValue(":unit", analyzer.unit);
    query.bindValue(":sweep_width", analyzer.sweep_width);
    query.bindValue(":sweep_width_unit", analyzer.sweep_width_unit);
    query.bindValue(":horizontal_resolution", analyzer.horizontal_resolution);
    query.bindValue(":horizontal_resolution_unit", analyzer.horizontal_resolution_unit);
    query.bindValue(":resolution_bandwidth", analyzer.resolution_bandwidth);
    query.bindValue(":resolution_bandwidth_unit", analyzer.resolution_bandwidth_unit);
    query.bindValue(":one_value", analyzer.one_value);
    query.bindValue(":two_value", analyzer.two_value);
    query.bindValue(":three_value", analyzer.three_value);
    query.bindValue(":four_value", analyzer.four_value);
    query.bindValue(":five_value", analyzer.five_value);
    query.bindValue(":six_value", analyzer.six_value);
    query.bindValue(":seven_value", analyzer.seven_value);
    query.bindValue(":eight_value", analyzer.eight_value);
    query.bindValue(":nine_value", analyzer.nine_value);
    query.bindValue(":ten_value", analyzer.ten_value);
    query.bindValue(":upper_index_twice", analyzer.upper_index_twice);
    query.bindValue(":upper_index_twice_unit", analyzer.upper_index_twice_unit);
    query.bindValue(":upper_index_thrice", analyzer.upper_index_thrice);
    query.bindValue(":upper_index_thrice_unit", analyzer.upper_index_thrice_unit);
    query.bindValue(":upper_index_quartic", analyzer.upper_index_quartic);
    query.bindValue(":upper_index_quartic_unit", analyzer.upper_index_quartic_unit);
    query.bindValue(":lower_index", analyzer.lower_index);
    query.bindValue(":lower_index_unit", analyzer.lower_index_unit);
    query.bindValue(":average_value", analyzer.average_value);
    query.bindValue(":upper_index", analyzer.upper_index);
    query.bindValue(":upper_index_unit", analyzer.upper_index_unit);
    query.bindValue(":conclusion", analyzer.conclusion);
    query.bindValue(":convert_deviation", analyzer.convert_deviation);
    query.bindValue(":lower_convert_deviation", analyzer.lower_convert_deviation);
    query.bindValue(":upper_convert_deviation", analyzer.upper_convert_deviation);
    query.bindValue(":standard_attenuator_attenuation", analyzer.standard_attenuator_attenuation);
    query.bindValue(":standard_attenuator_attenuation_unit", analyzer.standard_attenuator_attenuation_unit);
    query.bindValue(":signal_source_amplitude", analyzer.signal_source_amplitude);
    query.bindValue(":signal_source_amplitude_unit", analyzer.signal_source_amplitude_unit);
    query.bindValue(":vertical_scale", analyzer.vertical_scale);
    query.bindValue(":frequency", analyzer.frequency);
    query.bindValue(":frequency_unit", analyzer.frequency_unit);
    query.bindValue(":input_frequency", analyzer.input_frequency);
    query.bindValue(":start_frequency", analyzer.start_frequency);
    query.bindValue(":start_frequency_unit", analyzer.start_frequency_unit);
    query.bindValue(":end_frequency", analyzer.end_frequency);
    query.bindValue(":end_frequency_unit", analyzer.end_frequency_unit);
    query.bindValue(":revised_result", analyzer.revised_result);
    query.bindValue(":input_attenuator", analyzer.input_attenuator);
    query.bindValue(":input_attenuator_unit", analyzer.input_attenuator_unit);
    query.bindValue(":input_attenuator_conversion_effect", analyzer.input_attenuator_conversion_effect);
    query.bindValue(":spectrum_level", analyzer.spectrum_level);
    query.bindValue(":spectrum_level_unit", analyzer.spectrum_level_unit);
    query.bindValue(":gain_compression", analyzer.gain_compression);
    query.bindValue(":exceed_mark", analyzer.exceed_mark);
    query.bindValue(":exceed_mark_one", analyzer.exceed_mark_one);
    query.bindValue(":exceed_mark_two", analyzer.exceed_mark_two);
    query.bindValue(":measure_result", analyzer.measure_result);
    query.bindValue(":measure_result_unit", analyzer.measure_result_unit);
    query.bindValue(":technical_index", analyzer.technical_index);
    query.bindValue(":technical_index_left", analyzer.technical_index_left);
    query.bindValue(":technical_index_right", analyzer.technical_index_right);
    query.bindValue(":corrected_value", analyzer.corrected_value);
    query.bindValue(":type_value", analyzer.type_value);
    query.bindValue(":create_time", currentDateTime);
    query.bindValue(":update_time", currentDateTime);
    bool isSuccess = query.exec();
    if (isSuccess) {
        QString ssql = "INSERT INTO biz_business_device_measure_data_spectrum_analyzer "
                          " (id, data_id, data_type, nominal_value, unit, sweep_width, sweep_width_unit, horizontal_resolution, horizontal_resolution_unit,"
                          " resolution_bandwidth, resolution_bandwidth_unit, one_value, two_value, three_value, four_value, five_value, six_value, seven_value,"
                          " eight_value, nine_value, ten_value, upper_index_twice, upper_index_twice_unit, upper_index_thrice, upper_index_thrice_unit, "
                          " upper_index_quartic, upper_index_quartic_unit, lower_index, lower_index_unit, average_value, upper_index, upper_index_unit, "
                          " conclusion, convert_deviation, lower_convert_deviation, upper_convert_deviation, standard_attenuator_attenuation, "
                          " standard_attenuator_attenuation_unit, signal_source_amplitude, signal_source_amplitude_unit, vertical_scale, frequency, "
                          " frequency_unit, input_frequency, start_frequency, start_frequency_unit, end_frequency, end_frequency_unit, revised_result, "
                          " input_attenuator, input_attenuator_unit, input_attenuator_conversion_effect, spectrum_level, spectrum_level_unit, gain_compression, "
                          " exceed_mark, exceed_mark_one, exceed_mark_two, measure_result, measure_result_unit, technical_index, technical_index_left, "
                          " technical_index_right, corrected_value, type_value, create_time, update_time ) VALUES ( :1, :2, :3, :4, "
                          " :5, :6, :7, :8, :9, :10, :11,"
                          " :12, :13, :14, :15, :16, :17, :18, :19, :20, :21, :22,"
                          " :23, :24, :25, :26, :27, :28, "
                          " :29, :30, :31, :32, :33, :34, :35,"
                          " :36, :37, :38, :39, "
                          " :40, :41, :42, :43, :44, :45, :46, "
                          " :47, :48, :49, :50, :51, :52, "
                          " :53, :54, :55, :56, :57, :58, :59, "
                          " :60, :61, :62, :63, :64, :65, :66, "
                          " :67 );";
        saveLogToSql(ssql,&analyzer);
    }else {
qDebug() << "Insert data failed: " << query.lastError().text();
}
    return isSuccess;
}


//【查询】角色 根据分类id
QList<DeviceRole> BaseCommonApi::getDeviceRoleBydeviceId(QString cateory_id)
{
    QList<DeviceRole> result;
    QSqlQuery query;
    query.prepare("SELECT * FROM zd_device_role WHERE cateory_id = :cateory_id ");
    query.bindValue(":cateory_id",cateory_id);
    bool isSuccess  =  query.exec();
    if (isSuccess) {
        while (query.next()) {
            DeviceRole role;
            role.id = query.value("id").toString();
            role.belong_vername = query.value("belong_vername").toString();
            role.belong_checkname = query.value("belong_checkname").toString();
            role.cateory_id = query.value("cateory_id").toString();
            role.device_id = query.value("device_id").toString();
            role.device_type = query.value("device_type").toString();
            role.role = query.value("role").toString();
            role.create_time = query.value("create_time").toDateTime();
            role.update_time = query.value("update_time").toDateTime();
            result.append(role);
        }
    } else {
        qDebug() << "Query execution failed: " << query.lastError().text();
    }
   return result;
}
//【新增】角色
bool BaseCommonApi::InsertDeviceRole(DeviceRole role)
{
    QSqlQuery query;
    query.prepare("INSERT INTO zd_device_role (id,belong_vername,belong_checkname,cateory_id,device_id,device_type,role,create_time,update_time) "
                  " VALUES(:id,:belong_vername,:belong_checkname,:cateory_id,:device_id,:device_type,:role,:create_time,:update_time)");
    QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
     query.bindValue(":id", role.id);
     query.bindValue(":belong_vername", role.belong_vername);
     query.bindValue(":belong_checkname", role.belong_checkname);
     query.bindValue(":cateory_id", role.cateory_id);
     query.bindValue(":device_id", role.device_id);
     query.bindValue(":device_type", role.device_type);
     query.bindValue(":role", role.role);
     query.bindValue(":create_time", currentDateTime);
     query.bindValue(":update_time", currentDateTime);
     bool isSuccess = query.exec();
     if (!isSuccess) {
       qDebug() << "Insert data failed: " << query.lastError().text();
     }
     return isSuccess;
}
//【更新】角色
bool BaseCommonApi::UpdateDeviceRole(DeviceRole role)
{
        QSqlQuery query;
        query.prepare("UPDATE zd_device_role "
                      " SET belong_vername = :belong_vername,belong_checkname = :belong_checkname,cateory_id = :cateory_id,"
                      " device_id=:device_id,device_type=:device_type, role=:role,update_time=:update_time "
                      "  WHERE id = :id");
        QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
        query.bindValue(":id", role.id);
        query.bindValue(":belong_vername", role.belong_vername);
        query.bindValue(":belong_checkname", role.belong_checkname);
        query.bindValue(":cateory_id", role.cateory_id);
        query.bindValue(":device_id", role.device_id);
        query.bindValue(":device_type", role.device_type);
        query.bindValue(":role", role.role);
        query.bindValue(":update_time", currentDateTime);
        bool isSuccess = query.exec();
        if (!isSuccess) {
          qDebug() << "Insert data failed: " << query.lastError().text();
        }
        return isSuccess;
}
//检定项-信号发生器
QMap<QString,QList<QStringList>>  BaseCommonApi::getDeviceMeasureItemDataSignalGenerator(QString itemCatoryName,QString itemId,QMap<QString, QStringList> *headList)
{
    QMap<QString, QList<QStringList>> DataMapList;
    QList<QStringList> resultData;
    QStringList result;
    resultData.clear();

    QSqlQuery query;
    query.prepare("SELECT bbdmidsg.*,bbdmii.frequency,bbdmii.power,bbdmii.amplitude_modulation_depth,bbdmii.frequency_modulation_deviation,"
                  " bbdmii.remain_amplitude_modulation,bbdmii.remain_frequency_modulation,bbdmii.harmonic,bbdmii.phase_modulation_phase_deviation,"
                  " bbdmii.no_harmonic FROM biz_business_device_measure_item_data_signal_generator bbdmidsg"
                  " JOIN biz_business_device_measure_item_info bbdmii ON bbdmii.id = bbdmidsg.item_id"
                  " WHERE bbdmidsg.item_id =  :itemId"
                  " ORDER BY bbdmidsg.update_time DESC");
    query.bindValue(":itemId", itemId);
    if (query.exec()) {
        while (query.next()) {
            result.clear();
            result.append(query.value("id").toString());
            result.append(query.value("item_id").toString());  //检定项id
            result.append(query.value("data_type").toString());//检定项数据类型(一个检定项中区分两个表格)(字典code)
            result.append(query.value("nominal_value").toString());//标称值
            result.append(query.value("unit").toString());//标称值单位
            result.append(query.value("amplitude").toString());//幅度
            result.append(query.value("amplitude_unit").toString());//幅度单位
            result.append(query.value("frequency").toString());//频率
            result.append(query.value("frequency_unit").toString());//频率单位
            result.append(query.value("power").toString());//功率
            result.append(query.value("power_unit").toString());//功率单位
            result.append(query.value("technical_index_symbol").toString());//技术指标符号
            result.append(query.value("technical_index").toString());//技术指标   12
            result.append(query.value("technical_index_unit").toString());//技术指标单位
            result.append(query.value("urel").toString());//U(k=2)
            result.append(query.value("high_pass_filter").toString());//高通滤波
            result.append(query.value("high_pass_filter_unit").toString());//高通滤波单位  16
            result.append(query.value("lower_pass_filter").toString());//低通滤波
            result.append(query.value("lower_pass_filter_unit").toString());//低通滤波单位
            result.append(query.value("modulation_rate").toString());//调制速率
            result.append(query.value("modulation_rate_unit").toString());//调制速率单位
            result.append(query.value("upper_index_symbol").toString());//指标上限符号/THD上限符号
            result.append(query.value("upper_index").toString());//指标上限/THD上限
            result.append(query.value("upper_index_unit").toString());//指标上限单位/THD上限单位
            result.append(query.value("harmonic_number").toString());//谐波次数
            result.append(query.value("rbw_value").toString());//RBW
            result.append(query.value("rbw_value_unit").toString());//RBW单位
            result.append(query.value("vbw_value").toString());//VBW
            result.append(query.value("vbw_value_unit").toString());//VBW单位
            result.append(query.value("offset_frequency").toString());//偏移频率
            result.append(query.value("offset_frequency_unit").toString());//偏移频率单位
            result.append(query.value("create_time").toString());
            result.append(query.value("update_time").toString());
            result.append(query.value("frequency").toString());//频率
            result.append(query.value("power").toString());//功率
            result.append(query.value("amplitude_modulation_depth").toString());//调幅深度
            result.append(query.value("frequency_modulation_deviation").toString());//调频频偏
            result.append(query.value("remain_amplitude_modulation").toString());//剩余调幅
            result.append(query.value("remain_frequency_modulation").toString());//剩余调频
            result.append(query.value("harmonic").toString());//谐波
            result.append(query.value("phase_modulation_phase_deviation").toString());//调相相偏
            result.append(query.value("no_harmonic").toString());//非谐波
            resultData.append(result);
        }
    } else {
        qDebug() << "Query execution failed: " << query.lastError().text();
    }
    //进行检定项目列头转换
    DataMapList= GetDataReturnItemListBySignalGenerator(itemCatoryName,resultData,DataMapList,headList);
    return DataMapList;
}
QMap<QString, QList<QStringList>>BaseCommonApi::GetDataReturnItemListBySignalGenerator(QString itemCatoryName,QList<QStringList> ResultData,QMap<QString, QList<QStringList>> DataMapList,QMap<QString, QStringList> *HeadMapList)
{
    QList<QStringList> FrequencyList;
    QList<QStringList> PowerList;
    QList<QStringList> AmplitudeModulationDepthList;
    QList<QStringList> FMFrequencyOffsetList;
    QList<QStringList> RemainingAmplitudeModulationList;
    QList<QStringList> ResidualFMList;
    QList<QStringList> HarmonicList;
    QList<QStringList> PhaseModulationPhaseDeviationList;
    QList<QStringList> NonHarmonicList;
    if(itemCatoryName.contains("信号发生器")){
    for(const QStringList &row : ResultData)
    {
       QString VerificationItem=NULL;
        if (!row.isEmpty() && row[33]=="1" && row[2] == "1") {
                VerificationItem = "频率";
                //添加列头
                QStringList head;
                head  <<"序号"<<"检定项目"<<"标称值"<<"指标下限"<<"测量值"<<"指标上限"<<"相对误差"<<"U(k=2)" ;
                HeadMapList->insert(VerificationItem,head);
                //添加数据
                QStringList Data;
                Data.append(row[0]);  //ID
                Data.append(VerificationItem);  //检定项目
                Data.append(row[3] + row[4]);//标称值
                QString temp_low = QString::number(row[3].toDouble() - row[12].toDouble());
                Data.append(temp_low+ row[4]);//指标下限
                Data.append("");//测量值
                QString temp_hight = QString::number(row[3].toDouble() + row[12].toDouble());
                Data.append(temp_hight+ row[4]);//指标上限
                Data.append("");//相对误差
                Data.append(row[14]);//U(k=2)
                FrequencyList.append(Data);
         }else if(!row.isEmpty() && row[34]=="1" && row[2] =="2"){
            VerificationItem = "功率";
            //添加列头
            QStringList head;
            head  <<"序号"<<"检定项目"<<"频率"<<"标称值"<<"指标下限"
                 <<"测量值"<<"指标上限"<<"U(k=2)";
            HeadMapList->insert(VerificationItem,head);
            //添加数据
            QStringList Data;
            Data.append(row[0]);  //ID
            Data.append(VerificationItem);  //检定项目
            Data.append(row[7] + row[8]);//频率
            Data.append(row[3] + row[4]);//标称值
            QString temp_low = QString::number(row[3].toDouble() - row[12].toDouble());
            Data.append(temp_low + row[4]);//指标下限
            Data.append("");//测量值
            QString temp_hight = QString::number(row[3].toDouble() + row[12].toDouble());
            Data.append(temp_hight+ row[4]);//指标上限
            Data.append(row[14]);//U(k=2)
            PowerList.append(Data);
        }else if(!row.isEmpty() && row[35]=="1" && row[2] =="3"){
            VerificationItem = "调幅深度";
            //添加列头
            QStringList head;
            head  <<"序号"<<"检定项目"<<"频率"<<"高通滤波"<<"低通滤波"<<"调制速率"<<"标称值"<<"指标下限"<<"测量值"<<"指标上限"
                 <<"U(k=2)"<<"THD"<<"THD上限";
            HeadMapList->insert(VerificationItem,head);
            //添加数据
            QStringList Data;
            Data.append(row[0]);  //ID
            Data.append(VerificationItem);  //检定项目
            Data.append(row[7] + row[8]);//频率
            Data.append(row[15] + row[16]);//高通滤波
            Data.append(row[17] + row[18]);//低通滤波
            Data.append(row[19] + row[20]);//调制速率
            QString temp_hight = QString::number(row[3].toDouble() + row[12].toDouble());
            Data.append(row[3]+ row[4]);//标称值
            QString temp_low = QString::number(row[3].toDouble() - row[12].toDouble());
            Data.append(temp_low + row[4]);//指标下限
            Data.append("");//测量值
            Data.append(temp_hight + row[4]);//指标上限
            Data.append(row[14]);//U(k=2)
            Data.append("");//THD
            Data.append(row[21] + row[22] + row[23]);//THD上限
            AmplitudeModulationDepthList.append(Data);
        }else if(!row.isEmpty() && row[36]=="1" && row[2] =="4"){
            VerificationItem = "调频频偏";
            //添加列头
            QStringList head;
            head  <<"序号"<<"检定项目"<<"频率"<<"高通滤波"<<"低通滤波"<<"调制速率"<<"标称值"<<"指标下限"<<"测量值"<<"指标上限"
                 <<"U(k=2)"<<"THD"<<"THD上限";
            HeadMapList->insert(VerificationItem,head);
            //添加数据
            QStringList Data;
            Data.append(row[0]);  //ID
            Data.append(VerificationItem);  //检定项目
            Data.append(row[7] + row[8]);//频率
            Data.append(row[15] + row[16]);//高通滤波
            Data.append(row[17] + row[18]);//低通滤波
            Data.append(row[19] + row[20]);//调制速率
            QString temp_hight =  formatDoubleWithEffectiveDigits(row[3].toDouble() + row[12].toDouble(),4);
            Data.append(row[3]+ row[4]);//标称值
            QString temp_low = formatDoubleWithEffectiveDigits(row[3].toDouble() - row[12].toDouble(),4);
            Data.append(temp_low + row[4]);//指标下限
            Data.append("");//测量值
            Data.append(temp_hight + row[4]);//指标上限
            Data.append(row[14]);//U(k=2)
            Data.append("");//THD
            Data.append(row[21] + row[22] + row[23]);//THD上限
            FMFrequencyOffsetList.append(Data);
        }else if(!row.isEmpty() && row[37]=="1" && row[2] =="5"){
            VerificationItem = "剩余调幅";
            //添加列头
            QStringList head;
            head  <<"序号"<<"检定项目"<<"频率"<<"高通滤波"<<"低通滤波"<<"剩余调幅"<<"指标上限"<<"U(k=2)";
            HeadMapList->insert(VerificationItem,head);
            //添加数据
            QStringList Data;
            Data.append(row[0]);  //ID
            Data.append(VerificationItem);  //检定项目
            Data.append(row[7] + row[8]);//频率
            Data.append(row[15] + row[16]);//高通滤波
            Data.append(row[17] + row[18]);//低通滤波
            Data.append("");//剩余调幅
            Data.append(row[21] + row[22] + row[23]);//指标上限
            Data.append(row[14]);//U(k=2)
            RemainingAmplitudeModulationList.append(Data);
        }else if(!row.isEmpty() && row[38]=="1" && row[2] =="6"){
            VerificationItem = "剩余调频";
            //添加列头
            QStringList head;
            head  <<"序号"<<"检定项目"<<"频率"<<"高通滤波"<<"低通滤波"<<"剩余调频"<<"指标上限"<<"U(k=2)";
            HeadMapList->insert(VerificationItem,head);
            //添加数据
            QStringList Data;
            Data.append(row[0]);  //ID
            Data.append(VerificationItem);  //检定项目
            Data.append(row[7] + row[8]);//频率
            Data.append(row[15] + row[16]);//高通滤波
            Data.append(row[17] + row[18]);//低通滤波
            Data.append("");//剩余调频
            Data.append(row[21] + row[22] + row[23]);//指标上限
            Data.append(row[14]);//U(k=2)
            ResidualFMList.append(Data);
        }else if(!row.isEmpty() && row[39]=="1" && row[2] =="7"){
            VerificationItem = "谐波";
            //添加列头
            QStringList head;
            head  <<"序号"<<"检定项目"<<"频率"<<"幅度"<<"谐波次数"<<"基波幅度"<<"谐波幅度"<<"测量值"<<"指标上限"<<"U(k=2)";
            HeadMapList->insert(VerificationItem,head);
            //添加数据
            QStringList Data;
            Data.append(row[0]);  //ID
            Data.append(VerificationItem);  //检定项目
            Data.append(row[7] + row[8]);//频率
            Data.append(row[5] + row[6]);//幅度
            Data.append(row[24]);//谐波次数
            Data.append("");//基波幅度
            Data.append("");//谐波幅度
            Data.append("");//测量值
            Data.append(row[21] + row[22] + row[23]);//指标上限
            Data.append(row[14]);//U(k=2)
            HarmonicList.append(Data);
        }else if(!row.isEmpty() && row[40]=="1" && row[2] =="8"){
            VerificationItem = "调相相偏";
            //添加列头
            QStringList head;
            head  <<"序号"<<"检定项目"<<"频率"<<"高通滤波"<<"低通滤波"<<"调制速率"<<"标称值"<<"指标下限"<<"测量值"<<"指标上限"
                 <<"U(k=2)"<<"THD"<<"THD上限";
            HeadMapList->insert(VerificationItem,head);
            //添加数据
            QStringList Data;
            Data.append(row[0]);  //ID
            Data.append(VerificationItem);  //检定项目
            Data.append(row[7] + row[8]);//频率
            Data.append(row[15] + row[16]);//高通滤波
            Data.append(row[17] + row[18]);//低通滤波
            Data.append(row[19] + row[20]);//调制速率
            Data.append(row[3]+ row[4]);//标称值
            QString temp_low = formatDoubleWithEffectiveDigits(row[3].toDouble() - row[12].toDouble(),4);
            Data.append(temp_low + row[4]);//指标下限
            Data.append("");//测量值
            QString temp_hight =  formatDoubleWithEffectiveDigits(row[3].toDouble() + row[12].toDouble(),4);
            Data.append(temp_hight + row[4]);//指标上限
            Data.append(row[14]);//U(k=2)
            Data.append("");//THD
            Data.append(row[21] + row[22] + row[23]);//THD上限
            PhaseModulationPhaseDeviationList.append(Data);
        }else if(!row.isEmpty() && row[41]=="1" && row[2] =="9"){
            VerificationItem = "非谐波";
            //添加列头
            QStringList head;
            head  <<"序号"<<"检定项目"<<"频率"<<"功率"<<"偏移频率"<<"测量值"<<"指标上限"<<"U(k=2)";
            HeadMapList->insert(VerificationItem,head);
            //添加数据
            QStringList Data;
            Data.append(row[0]);  //ID
            Data.append(VerificationItem);  //检定项目
            Data.append(row[7] + row[8]);//频率
            Data.append(row[15] + row[16]);//功率
            Data.append(row[29] + row[30]);//偏移频率
            Data.append("");//测量值
            Data.append(row[21] + row[22] + row[23]);//指标上限
            Data.append(row[14]);//U(k=2)
            NonHarmonicList.append(Data);
        }

     }
 }
    if(FrequencyList.count()!=0){
        DataMapList.insert("频率",FrequencyList);
    };
    if(PowerList.count()!=0){
        DataMapList.insert("功率",PowerList);
    };
    if(AmplitudeModulationDepthList.count()!=0){
        DataMapList.insert("调幅深度",AmplitudeModulationDepthList);
    };
    if(FMFrequencyOffsetList.count()!=0){
        DataMapList.insert("调频频偏",FMFrequencyOffsetList);
    };
    if(RemainingAmplitudeModulationList.count()!=0){
        DataMapList.insert("剩余调幅",RemainingAmplitudeModulationList);
    };
    if(ResidualFMList.count()!=0){
        DataMapList.insert("剩余调频",ResidualFMList);
    };
    if(HarmonicList.count()!=0){
        DataMapList.insert("谐波",HarmonicList);
    };
    if(PhaseModulationPhaseDeviationList.count()!=0){
        DataMapList.insert("调相相偏",PhaseModulationPhaseDeviationList);
    };
    if(NonHarmonicList.count()!=0){
        DataMapList.insert("非谐波",NonHarmonicList);
    };
    return  DataMapList;
}
//【保存】信号发生器
bool BaseCommonApi::InsertDeviceMeasureDataSignalGenerator(DeviceMeasureDataSignalGenerator generator)
{
    QSqlQuery query;
    query.prepare("INSERT INTO biz_business_device_measure_data_signal_generator "
                  "( id, data_id, data_type, nominal_value, unit, upper_index, upper_thd, lower_index, measure_value, measure_value_unit,"
                  " relative_error, urel, frequency, frequency_unit, power, power_unit, amplitude, amplitude_unit, high_pass_filter, "
                  "high_pass_filter_unit, lower_pass_filter, lower_pass_filter_unit, modulation_rate, modulation_rate_unit, thd, upper_index_symbol, "
                  "upper_index_unit, remain_amplitude_modulation,harmonic_number, fundamental_amplitude, fundamental_amplitude_unit, "
                  "harmonic_amplitude, harmonic_amplitude_unit, offset_frequency, offset_frequency_unit, exceed_mark, exceed_mark_one, "
                  "create_time, update_time ) VALUES ( :id, :data_id, :data_type, :nominal_value, :unit, :upper_index, :upper_thd, :lower_index, "
                  ":measure_value, :measure_value_unit, :relative_error, :urel, :frequency, :frequency_unit, :power, :power_unit, :amplitude,"
                  " :amplitude_unit, :high_pass_filter, :high_pass_filter_unit, :lower_pass_filter, :lower_pass_filter_unit, :modulation_rate, :modulation_rate_unit,"
                  " :thd, :upper_index_symbol, :upper_index_unit, :remain_amplitude_modulation, :harmonic_number, :fundamental_amplitude,"
                  " :fundamental_amplitude_unit, :harmonic_amplitude, :harmonic_amplitude_unit, :offset_frequency, :offset_frequency_unit,"
                  " :exceed_mark, :exceed_mark_one, :create_time, :update_time );");
    QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss");
    query.bindValue(":id", generator.id);
    query.bindValue(":data_id", generator.data_id);
    query.bindValue(":data_type", generator.data_type);
    query.bindValue(":nominal_value", generator.nominal_value);
    query.bindValue(":unit", generator.unit);
    query.bindValue(":upper_index", generator.upper_index);
    query.bindValue(":upper_thd", generator.upper_thd);
    query.bindValue(":lower_index", generator.lower_index);
    query.bindValue(":measure_value", generator.measure_value);
    query.bindValue(":measure_value_unit", generator.measure_value_unit);
    query.bindValue(":relative_error", generator.relative_error);
    query.bindValue(":urel", generator.urel);
    query.bindValue(":frequency", generator.frequency);
    query.bindValue(":frequency_unit", generator.frequency_unit);
    query.bindValue(":power", generator.power);
    query.bindValue(":power_unit", generator.power_unit);
    query.bindValue(":amplitude", generator.amplitude);
    query.bindValue(":amplitude_unit", generator.amplitude_unit);
    query.bindValue(":high_pass_filter", generator.high_pass_filter);
    query.bindValue(":high_pass_filter_unit", generator.high_pass_filter_unit);
    query.bindValue(":lower_pass_filter", generator.lower_pass_filter);
    query.bindValue(":lower_pass_filter_unit", generator.lower_pass_filter_unit);
    query.bindValue(":modulation_rate", generator.modulation_rate);
    query.bindValue(":modulation_rate_unit", generator.modulation_rate_unit);
    query.bindValue(":thd", generator.thd);
    query.bindValue(":upper_index_symbol", generator.upper_index_symbol);
    query.bindValue(":upper_index_unit", generator.upper_index_unit);
    query.bindValue(":remain_amplitude_modulation", generator.remain_amplitude_modulation);
    query.bindValue(":harmonic_number", generator.harmonic_number);
    query.bindValue(":fundamental_amplitude", generator.fundamental_amplitude);
    query.bindValue(":fundamental_amplitude_unit", generator.fundamental_amplitude_unit);
    query.bindValue(":harmonic_amplitude", generator.harmonic_amplitude);
    query.bindValue(":harmonic_amplitude_unit", generator.harmonic_amplitude_unit);
    query.bindValue(":offset_frequency", generator.offset_frequency);
    query.bindValue(":offset_frequency_unit", generator.offset_frequency_unit);
    query.bindValue(":exceed_mark", generator.exceed_mark);
    query.bindValue(":exceed_mark_one", generator.exceed_mark_one);
    query.bindValue(":create_time", currentDateTime);
    query.bindValue(":update_time", currentDateTime);
    bool isSuccess = query.exec();
    if (isSuccess) {
      QString ssql = "INSERT INTO biz_business_device_measure_data_signal_generator "
                     "( id, data_id, data_type, nominal_value, unit, upper_index, upper_thd, lower_index, measure_value, measure_value_unit,"
                     " relative_error, urel, frequency, frequency_unit, power, power_unit, amplitude, amplitude_unit, high_pass_filter, "
                     "high_pass_filter_unit, lower_pass_filter, lower_pass_filter_unit, modulation_rate, modulation_rate_unit, thd, upper_index_symbol, "
                     "upper_index_unit, remain_amplitude_modulation,harmonic_number, fundamental_amplitude, fundamental_amplitude_unit, "
                     "harmonic_amplitude, harmonic_amplitude_unit, offset_frequency, offset_frequency_unit, exceed_mark, exceed_mark_one, "
                     "create_time, update_time ) VALUES ( :1, :2, :3, :4, :5, :6, :7, :8, "
                     ":9, :10, :11, :12, :13, :14, :15, :16, :17,"
                     " :18, :19, :20, :21, :22, :23, :24,"
                     " :25, :26, :27, :28, :29, :30,"
                     " :31, :32, :33, :34, :35,"
                     " :36, :37, :38, :39 );";
      saveLogToSql(ssql,&generator);
    }else {
qDebug() << "Insert data failed: " << query.lastError().text();
}
    return isSuccess;
}

//新建检定程序中查询所有的标准装置
QList<StandardInfo> BaseCommonApi::getStandardInfo()
{
    QList<StandardInfo> result;
    QSqlQuery query;
    bool isSuccess = query.exec("SELECT id,standard_no,standard_name,dept_name,manage_status FROM biz_equipment_standard_info ");
    if(isSuccess){
         while (query.next()) {
             StandardInfo info;
             info.id = query.value("id").toString();
             info.standard_no = query.value("standard_no").toString();
             info.standard_name = query.value("standard_name").toString();
             info.dept_name = query.value("dept_name").toString();
             info.manage_status = query.value("manage_status").toString();
             result.append(info);
         }
    }else {
        qDebug() << "select data failed: " << query.lastError().text();
    }
    return result;
}

//根据标准装置id查询标准设备
QList<BizDevice> BaseCommonApi::getStandardInfoListByStandardId(QString standardId)
{
    QList<BizDevice> result;
    QSqlQuery query;
       bool isSuccess = query.exec("SELECT bei.id ,bei.equipment_name ,bei.model ,bei.manufacture_no ,bei.manufacturer,bei.type  FROM biz_equipment_info bei "
                                   " JOIN biz_equipment_standard_equipment_relation beser ON beser.equipment_id = bei.id "
                                   " WHERE beser.standard_id = :standardId ");
       query.bindValue(":standardId",standardId);
     if (isSuccess) {
             while (query.next()) {
                 BizDevice device;
                 device.id = query.value("id").toString();
                 device.equipment_name = query.value("equipment_name").toString();
                 device.model = query.value("model").toString();
                 device.manufacture_no = query.value("manufacture_no").toString();
                 device.manufacturer = query.value("manufacturer").toString();
                 device.type = query.value("type").toString();
                 result.append(device);
             }
         } else {
             qDebug() << "Query execution failed: " << query.lastError().text();
         }
         return result;
}