From 61a8166ed71b881863de8c62e45ae3e7803a455e Mon Sep 17 00:00:00 2001
From: pansen <pansen626@sina.com>
Date: 星期一, 28 一月 2019 20:21:20 +0800
Subject: [PATCH] 添加布控等级。对比暂未添加本字段。

---
 QiaoJiaSystem/build/FaceSearchServer                        |    0 
 QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.cpp |   11 ++
 QiaoJiaSystem/build/syncDBClient                            |    0 
 syncDBTool/ErlangDbTool.cpp                                 |   32 +++++++-
 QiaoJiaSystem/StructureApp/AppPipeController.h              |    1 
 QiaoJiaSystem/build/DataWebServer                           |    0 
 QiaoJiaSystem/build/configjson说明.md                         |   62 +++++++++------
 QiaoJiaSystem/DataManagerServer/http_configserver.cpp       |   52 ++++++++----
 QiaoJiaSystem/build/VideoAnalysFromHC                       |    0 
 syncDBTool/ErlangDbTool.h                                   |    3 
 QiaoJiaSystem/LocalDBTool/SqliteFaceEncap.cpp               |    2 
 QiaoJiaSystem/DataManagerServer/http_configserver.h         |    3 
 QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.cpp      |    3 
 syncDBTool/SyncDB.hpp                                       |    6 +
 QiaoJiaSystem/LocalDBTool/SqliteToolkit.hpp                 |    7 +
 QiaoJiaSystem/FaceSearchServer/AlarmServer.hpp              |    1 
 QiaoJiaSystem/build/StructureApp                            |    0 
 17 files changed, 130 insertions(+), 53 deletions(-)

diff --git a/QiaoJiaSystem/DataManagerServer/http_configserver.cpp b/QiaoJiaSystem/DataManagerServer/http_configserver.cpp
index 5fc72f5..ad5ae68 100644
--- a/QiaoJiaSystem/DataManagerServer/http_configserver.cpp
+++ b/QiaoJiaSystem/DataManagerServer/http_configserver.cpp
@@ -2123,11 +2123,13 @@
         std::string strUUID = value["uuid"].asString();
 
         std::string Enabled = value["enabled"].asString();
+        Enabled = Enabled.empty() ? "1" : Enabled;
         std::string TableType = value["TableType"].asString();
         std::string SyncType = value["SyncType"].asString();
         std::string TableId = value["TableId"].asString();
         std::string BwType = value["BwType"].asString();
         std::string createBy = value["createBy"].asString();
+        std::string monLevel = value["monLevel"].asString();
 
         std::string UploadFlag = "-1";
         if (SyncType == "1") {
@@ -2209,7 +2211,8 @@
 //        std::string uuid = "";
         bool ret_addPerson = false;
 
-        addPersonMToDB(TableName, img_url, SyncType, feature_base64, faceResults, idcard, strUUID, ret_addPerson);
+        addPersonMToDB(TableName, img_url, SyncType, feature_base64, faceResults, idcard, strUUID, monLevel, Enabled,
+                       ret_addPerson);
 
         if (ret_addPerson && strUUID.size() > 0) {
             std::string str_result = std::string("{\"uuid\":").append(
@@ -2266,6 +2269,7 @@
         std::string TableId = value["TableId"].asString();
         std::string BwType = value["BwType"].asString();
         std::string CreateBy = value["createBy"].asString();
+        std::string monLevel = value["monLevel"].asString();
 //        std::string BwType = value["BwType"].asString();
         std::string UploadFlag = "-1";
         if (SyncType == "1") {
@@ -2363,12 +2367,14 @@
                 fieldValues.insert(make_pair("uuid", strUUID));
                 fieldValues.insert(make_pair("idCard", idcard));
                 fieldValues.insert(make_pair("enabled", Enabled));
+                fieldValues.insert(make_pair("monitorLevel", monLevel));
                 ret_addPerson = m_SqliteFaceEncap.updateFace(TableName, addFaceData, fieldValues);
             }
         } else {
             fieldValues.insert(make_pair("uuid", strUUID));
             fieldValues.insert(make_pair("idCard", idcard));
             fieldValues.insert(make_pair("enabled", Enabled));
+            fieldValues.insert(make_pair("monitorLevel", monLevel));
             ret_addPerson = erlangDbTool->updatePerson(strUUID, addFaceData, fieldValues);
         }
 
@@ -2424,41 +2430,48 @@
 
 void devHttpServer_c::addPersonMToDB(const string &TableName, const string &img_url, const string &SyncType,
                                      const string &feature_base64, const Features &faceResults, string &idcard,
-                                     string &strUUID, bool &ret_addPerson) {
+                                     string &strUUID, string &monLevel, string &Enabled, bool &ret_addPerson) {
+    FieldValues fieldValues;
+    AddFaceData addFaceData;
+
+    addFaceData.uuid = strUUID;
+    addFaceData.faceUrl = img_url;
+
+    fieldValues.insert(make_pair("monitorLevel", monLevel));
+    fieldValues.insert(make_pair("enabled", Enabled));
+    fieldValues.insert(make_pair("idCard", idcard));
+
     if (SyncType == "0") {
-        FieldValues fieldValues;
-        AddFaceData addFaceData;
         addFaceData.feature.resize(faceResults[0].feature.size());
         memcpy(addFaceData.feature.data(), faceResults[0].feature.data(), faceResults[0].feature.size());
 
         //#todo uuid have value is update
         if (strUUID.size() <= 0) {
             // get Person id
-
             strUUID = AppUtil::getPersonId(m_batch, m_SerialNumber);
-            addFaceData.uuid = strUUID;
-            addFaceData.faceUrl = img_url;
-
             fieldValues.insert(make_pair("uuid", strUUID));
-            fieldValues.insert(make_pair("idCard", idcard));
             auto t_id = m_SqliteFaceEncap.addFace(TableName, addFaceData, fieldValues);
             ret_addPerson = t_id.size() > 0 ? true : false;
         } else {
             //#todo update table
-            addFaceData.uuid = strUUID;
-            addFaceData.faceUrl = img_url;
-
             fieldValues.insert(make_pair("uuid", strUUID));
-            fieldValues.insert(make_pair("idCard", idcard));
             ret_addPerson = m_SqliteFaceEncap.updateFace(TableName, addFaceData, fieldValues);
         }
-
     } else {
-        //#todo update data
-        // get Person id
-        strUUID = strUUID.size() > 0 ? strUUID : AppUtil::getPersonId(m_batch, m_SerialNumber);
-        ret_addPerson = ret_addPerson = erlangDbTool->addPerson(strUUID, TableName, feature_base64, img_url,
-                                                                idcard);
+        if (strUUID.size() <= 0) {
+//                insert
+            strUUID = AppUtil::getPersonId(m_batch, m_SerialNumber);
+//            ret_addPerson = ret_addPerson = erlangDbTool->addPerson(strUUID, TableName, feature_base64, img_url,
+//                                                                    idcard);
+            fieldValues.insert(make_pair("uuid", strUUID));
+            addFaceData.feature_base64 = feature_base64;
+            ret_addPerson = erlangDbTool->addPerson(TableName, addFaceData, fieldValues);
+        } else {
+//                update
+            fieldValues.insert(make_pair("uuid", strUUID));
+            addFaceData.feature_base64 = feature_base64;
+            ret_addPerson = erlangDbTool->updatePerson(strUUID, addFaceData, fieldValues);
+        }
     }
 }
 
@@ -2642,6 +2655,7 @@
                     subJson.append("\"tableName\":\"" + TableName + "\",");
                     subJson.append("\"idcard\":\"" + item.second.idcard + "\",");
                     subJson.append("\"enable\":\"" + item.second.enable + "\",");
+                    subJson.append("\"monLevel\":\"" + item.second.monLevel + "\",");
                     subJson.append("\"imgUrl\":\"" + item.second.img + "\"");
 //                subJson.append("\"feature\":\"" + item.second.feature + "\",");
                     //#todo modifysvn upda  svn comm
diff --git a/QiaoJiaSystem/DataManagerServer/http_configserver.h b/QiaoJiaSystem/DataManagerServer/http_configserver.h
index 1261485..3fe1e83 100644
--- a/QiaoJiaSystem/DataManagerServer/http_configserver.h
+++ b/QiaoJiaSystem/DataManagerServer/http_configserver.h
@@ -203,7 +203,8 @@
 
     void
     addPersonMToDB(const string &TableName, const string &img_url, const string &SyncType, const string &feature_base64,
-                   const Features &faceResults, string &idcard, string &strUUID, bool &ret_addPerson);
+                   const Features &faceResults, string &idcard, string &strUUID, string &monLevel, string &Enabled,
+                   bool &ret_addPerson);
 
     void getMat(string &img_url, const string &img_base64, cv::Mat &image) const;
 };
diff --git a/QiaoJiaSystem/FaceSearchServer/AlarmServer.hpp b/QiaoJiaSystem/FaceSearchServer/AlarmServer.hpp
index 2de5947..05c80aa 100644
--- a/QiaoJiaSystem/FaceSearchServer/AlarmServer.hpp
+++ b/QiaoJiaSystem/FaceSearchServer/AlarmServer.hpp
@@ -28,6 +28,7 @@
     std::string faceUrl;
     std::string idcard;
     std::string enabled;
+    std::string monLevel;
 };
 
 static std::vector<std::string> AlarmServerPropertyAnalyseByComma(std::string str_list) {
diff --git a/QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.cpp b/QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.cpp
index f592c31..9d22dcf 100644
--- a/QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.cpp
+++ b/QiaoJiaSystem/FaceSearchServer/FaceDBCompareServer.cpp
@@ -156,6 +156,8 @@
                     test.features.push_back(t_fea);
                     test.faceUrl = it.img;
                     test.idcard = it.idcard;
+                    test.enabled = it.enable;
+                    test.monLevel = it.monLevel;
                 }
 //                //#todo
 //                for (auto it = mymap->begin(); it != mymap->end(); it++) {
@@ -200,6 +202,7 @@
                 test.faceUrl = t_sen.faceurl;
                 test.idcard = t_faceInfoCache[t_sen.uuid].idCard;
                 test.enabled = t_sen.enable;
+                test.monLevel = t_faceInfoCache[t_sen.uuid].monLevel;
             }
         }
 //            鍛婅瘔鍒锋柊鍑芥暟锛屽綋鍓嶅簳搴撶殑鏁版嵁鍑嗗瀹屾垚
diff --git a/QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.cpp b/QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.cpp
index ddcd788..b1f942d 100644
--- a/QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.cpp
+++ b/QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.cpp
@@ -68,7 +68,7 @@
 ::FaceSearch::FaceResults
 FaceFeatureSearchServerI::faceSearchTopN(const ::FaceSearch::Data &feature, const ::std::string &info_json,
                                          ::Ice::Int topN, ::Ice::Float score, const ::Ice::Current &) {
-    ClockTimer clockTimer("faceSearchTopN  " + to_string(score) + "  :");
+    ClockTimer clockTimer("faceSearchTopN  ");
     INFO("faceSearchTopN start");
 //    #鑾峰彇绾跨▼id鍘绘壘璧勬簮鍙ユ焺
     thread::id key = std::this_thread::get_id();
@@ -112,7 +112,8 @@
 //                }
 //                score
 //                瀵规瘮鍑芥暟
-                t_FaceFC->compare(key, &featureData, topN,);
+                float t_score = atoi(t_tableInfo.cmpThreshold.c_str()) / 100;
+                t_FaceFC->compare(key, &featureData, topN, t_score);
                 DBG("m_faceFCMAP compare end " << it.first);
 //                鑾峰彇瀵规瘮缁撴灉
                 auto t_results = t_FaceFC->getTopResult(key);
@@ -206,6 +207,8 @@
 
                 value["likePer"] = item.confidence > 0 ? item.confidence : 0.0;
                 value["personPicUrl"] = item.imgUrl.size() > 0 ? item.imgUrl : "";//diku tupian
+
+//                string strC = item.idcard+ item.
                 value["idcard"] = item.idcard.size() > 0 ? item.idcard : "";//diku tupian
                 //濡傛灉 alarmRet 涓嶄负绌烘妸 浠栫殑鍊� 鏀惧叆 personIsHub,鍚﹀垯涓�4
 //                #TODO 濡傛灉鍚敤鍒欐甯稿垽鏂�,鏈竷鎺у垯璁や负鏄湭鐭ワ紵
@@ -251,7 +254,7 @@
         std::thread thd(dataUpdate, faceFea);
         thd.detach();
     }
-    auto typeInfoCache = faceFea->m_erlangDbTool.findAllTypeInfo();
+//    auto typeInfoCache = faceFea->m_erlangDbTool.findAllTypeInfo();
     faceFea->m_tableType.clear();
     string str_config = faceFea->m_erlangDbTool.getConfigJsonString();
 
@@ -270,6 +273,8 @@
 //            tabInfo.bwType = item.second.bwType = typeInfoCache.find(item.first)->second.bwType;
             tabInfo.bwType = item.second.bwType;//= typeInfoCache.find(item.first)->second.bwType;
             tabInfo.createBy = item.second.create_by;
+            tabInfo.enabled = item.second.enabled;
+            tabInfo.cmpThreshold = item.second.cmpThreshold;
 
             if ((tabInfo.tableName.find("lt_") == 0) && (tabInfo.createBy != appConfig.getStringProperty("erlNode"))) {
                 continue;
diff --git a/QiaoJiaSystem/LocalDBTool/SqliteFaceEncap.cpp b/QiaoJiaSystem/LocalDBTool/SqliteFaceEncap.cpp
index 589c81e..cc63e6f 100644
--- a/QiaoJiaSystem/LocalDBTool/SqliteFaceEncap.cpp
+++ b/QiaoJiaSystem/LocalDBTool/SqliteFaceEncap.cpp
@@ -409,6 +409,8 @@
             tableInfo.sex = query.value(3).toString().toStdString();
             tableInfo.idCard = query.value(4).toString().toStdString();
             tableInfo.phoneNum = query.value(5).toString().toStdString();
+            tableInfo.enable = query.value(10).toString().toStdString();
+            tableInfo.monLevel = query.value(11).toString().toStdString();
             faceInfosCache.insert(std::make_pair(tableInfo.uuid, tableInfo));
         }
     }
diff --git a/QiaoJiaSystem/LocalDBTool/SqliteToolkit.hpp b/QiaoJiaSystem/LocalDBTool/SqliteToolkit.hpp
index 6e2ed40..38f2ea8 100644
--- a/QiaoJiaSystem/LocalDBTool/SqliteToolkit.hpp
+++ b/QiaoJiaSystem/LocalDBTool/SqliteToolkit.hpp
@@ -28,6 +28,7 @@
     std::string uuid;
     FaceFeature feature;
     std::string faceUrl;
+    std::string feature_base64;
 };
 
 struct FaceInfo {
@@ -37,6 +38,8 @@
     std::string sex;
     std::string idCard;
     std::string phoneNum;
+    std::string enable;
+    std::string monLevel;
 };
 typedef std::vector<FaceInfo> FaceInfos;
 typedef std::map<std::string, FaceInfo> FaceInfosCache;
@@ -86,6 +89,7 @@
 
     //
     std::string getFacesFromTableSql(std::string tableName) {
+//        #todo get monLevel 鑱斿悎鏌ヨ
         std::string sql =
             "select uuid,feature,create_time,faceUrl,del_flag,enabled from '" + tableName +
             "_fea' where feature is not null ";
@@ -179,7 +183,7 @@
         std::string sqlTemp = sql;
         std::string sql2 = ") VALUES('";
         for (auto item : fieldValues) {
-            if (item.first.size() != 0) {
+            if (item.first.size() != 0 && item.second.size() != 0) {
                 sql.append(item.first + ",");
                 sql2.append(item.second + "','");
             }
@@ -243,6 +247,7 @@
         sql.append("update_time DATETIME     DEFAULT NULL,");
         sql.append("create_by   varchar(255) DEFAULT NULL,");
         sql.append("del_flag    INTEGER      DEFAULT 0,");
+        sql.append("monitorLevel    varchar(255)      DEFAULT 0,");
         sql.append("    enabled     varchar(255) DEFAULT 1");
         sql.append(");");
         // 浜鸿劯鐗瑰緛琛�
diff --git a/QiaoJiaSystem/StructureApp/AppPipeController.h b/QiaoJiaSystem/StructureApp/AppPipeController.h
index 2827a56..f87fc2d 100644
--- a/QiaoJiaSystem/StructureApp/AppPipeController.h
+++ b/QiaoJiaSystem/StructureApp/AppPipeController.h
@@ -84,6 +84,7 @@
     void initPerHub();
 
 private:
+    ffmpeg::VideoCaptureElement videoCaptureElement;
     YoloRpcElement yoloRpcElement;
     FaceRpcElement faceRpcElement;
     FaceExtractElement faceExtractElement;
diff --git a/QiaoJiaSystem/build/DataWebServer b/QiaoJiaSystem/build/DataWebServer
index c043dd2..ffaaa5b 100755
--- a/QiaoJiaSystem/build/DataWebServer
+++ b/QiaoJiaSystem/build/DataWebServer
Binary files differ
diff --git a/QiaoJiaSystem/build/FaceSearchServer b/QiaoJiaSystem/build/FaceSearchServer
index c0ed347..fdb46a6 100755
--- a/QiaoJiaSystem/build/FaceSearchServer
+++ b/QiaoJiaSystem/build/FaceSearchServer
Binary files differ
diff --git a/QiaoJiaSystem/build/StructureApp b/QiaoJiaSystem/build/StructureApp
index 5b2d6f4..2b79711 100755
--- a/QiaoJiaSystem/build/StructureApp
+++ b/QiaoJiaSystem/build/StructureApp
Binary files differ
diff --git a/QiaoJiaSystem/build/VideoAnalysFromHC b/QiaoJiaSystem/build/VideoAnalysFromHC
index 51b9386..b73c902 100755
--- a/QiaoJiaSystem/build/VideoAnalysFromHC
+++ b/QiaoJiaSystem/build/VideoAnalysFromHC
Binary files differ
diff --git "a/QiaoJiaSystem/build/configjson\350\257\264\346\230\216.md" "b/QiaoJiaSystem/build/configjson\350\257\264\346\230\216.md"
index a59efa6..0ddac1d 100644
--- "a/QiaoJiaSystem/build/configjson\350\257\264\346\230\216.md"
+++ "b/QiaoJiaSystem/build/configjson\350\257\264\346\230\216.md"
@@ -1,31 +1,34 @@
 ##json鏂囦欢妯℃澘鍙婂弬鏁板惈涔�
 
     {
-       "DEV_ID" : "DSVAD010120181119",
-       "clusterID" : "",
-       "webPort" : 11111,
-       "netIfName" : "enp3s0",
-       "localPasswd" : "123456",
-       "ES_IP" : "192.168.1.122",
-       "ES_PORT" : 9200,
-       "mainServerIp" : "192.168.1.182",
-       "mainServerPort" : "3697",
-       "mainServerrUrl" : "/addPerson/uploadToTemporary",
-       "TotalLoadSize" : "500",
-       "buildAddr" : "/home/bsk/Apps/QiaoJiaSystem/build/",
-       "cutPath" : "/home/bsk/work/qiaojia/cut",
-       "loadPath" : "/home/bsk/work/qiaojia/load",
-       "logPath" : "/home/bsk/work/log/",
-       "FaceDetectionSampleSize" : 720,
-       "FaceSeachSleepTime" : 60,
-       "encode_thread_num" : 3,       
-       "erlCookie" : "123",
-       "erlFatherNode" : " ",
-       "erlNode" : "f6d7d984-858e-4235-a657-644927b3a628@192.168.1.148",
-       "erlPath" : "/opt/erlang/f6d7d984-858e-4235-a657-644927b3a628",
-       "redis_buf_len" : 750,
-       "redis_ip" : "127.0.0.1",       
-       "srsAddr" : "rtmp://192.168.1.122:1934/live/"
+        "DEV_ID" : "DSVAD010120181119",
+        "clusterID" : "",
+        "webPort" : 11111,
+        "netIfName" : "enp3s0",
+        "localPasswd" : "123456",
+        "ES_IP" : "192.168.1.122",
+        "ES_PORT" : 9200,
+        "mainServerIp" : "192.168.1.182",
+        "mainServerPort" : "3697",
+        "mainServerrUrl" : "/addPerson/uploadToTemporary",
+        "addFromAnalyUrl":"192.168.1.182:3699/data/api-c/taskUser/addFromAnaly",
+        "updateFromAnalyUrl":"192.168.1.182::3699/data/api-c/taskUser/updateFromC",
+        "addTaskAnalyUrl":"192.168.1.182:3699/addTaskByNode",
+        "TotalLoadSize" : "500",
+        "buildAddr" : "/home/bsk/Apps/QiaoJiaSystem/build/",
+        "cutPath" : "/home/bsk/work/qiaojia/cut",
+        "loadPath" : "/home/bsk/work/qiaojia/load",
+        "logPath" : "/home/bsk/work/log/",
+        "FaceDetectionSampleSize" : 720,
+        "FaceSeachSleepTime" : 60,
+        "encode_thread_num" : 3,       
+        "erlCookie" : "123",
+        "erlFatherNode" : " ",
+        "erlNode" : "f6d7d984-858e-4235-a657-644927b3a628@192.168.1.148",
+        "erlPath" : "/opt/erlang/f6d7d984-858e-4235-a657-644927b3a628",
+        "redis_buf_len" : 750,
+        "redis_ip" : "127.0.0.1",       
+        "srsAddr" : "rtmp://192.168.1.122:1934/live/"
     }
 
 ----
@@ -62,6 +65,15 @@
 
 * mainServerrUrl
     >浜哄憳涓婁紶鐨勬帴鍙rl
+
+* addFromAnalyUrl
+    >甯冩帶浜哄憳涓婁紶鐨勬帴鍙rl
+
+* updateFromAnalyUrl
+    >甯冩帶浜哄憳鏇存柊涓婁紶鐨勬帴鍙rl
+
+* addTaskAnalyUrl
+    >榛戝悕鍗曞簳搴撳垱寤哄拰鏇存柊鐨勪笂浼犳帴鍙rl
 ---
 
 ---
diff --git a/QiaoJiaSystem/build/syncDBClient b/QiaoJiaSystem/build/syncDBClient
index bc319de..0d6caf2 100755
--- a/QiaoJiaSystem/build/syncDBClient
+++ b/QiaoJiaSystem/build/syncDBClient
Binary files differ
diff --git a/syncDBTool/ErlangDbTool.cpp b/syncDBTool/ErlangDbTool.cpp
index 5e79726..b0cc410 100755
--- a/syncDBTool/ErlangDbTool.cpp
+++ b/syncDBTool/ErlangDbTool.cpp
@@ -1185,10 +1185,32 @@
     return false;
 }
 
+bool ErlangTool::ErlangDbTool::addPerson(std::string t_tableName, AddFaceData &faceData, FieldValues &fieldValues) {
+//    #todo 璁板緱娴嬭瘯涓枃
+    std::string strSql = getInsertSql(t_tableName, fieldValues);
+    fieldValues.clear();
+    fieldValues.insert(make_pair("uuid", faceData.uuid));
+    fieldValues.insert(make_pair("faceUrl", faceData.faceUrl));
+    fieldValues.insert(make_pair("feature", faceData.feature_base64));
+
+    std::string strSqlFea = getInsertSql(t_tableName + "_fea", fieldValues);
+    strSql.append(strSqlFea);
+    //    #todo 璁板緱娴嬭瘯涓枃  鍙湁浜哄憳淇℃伅琛ㄦ洿鏂帮紝鐗瑰緛鏇存柊鏆傛椂娌″仛
+
+    return getExecSqlResult(strSql);
+}
+
 bool ErlangTool::ErlangDbTool::updatePerson(std::string t_tableName, AddFaceData &faceData, FieldValues &fieldValues) {
 //    #todo 璁板緱娴嬭瘯涓枃
     std::string strSql = getUpdateFaceTableSql(t_tableName, fieldValues);
-    //    #todo 璁板緱娴嬭瘯涓枃  鍙湁浜哄憳淇℃伅琛ㄦ洿鏂帮紝鐗瑰緛鏇存柊鏆傛椂娌″仛
+    fieldValues.clear();
+    fieldValues.insert(make_pair("uuid", faceData.uuid));
+    fieldValues.insert(make_pair("faceUrl", faceData.faceUrl));
+
+    fieldValues.insert(make_pair("feature", faceData.feature_base64));
+
+    std::string strSqlFea = getInsertSql(t_tableName + "_fea", fieldValues);
+    strSql.append(strSqlFea);
 
     return getExecSqlResult(strSql);
 }
@@ -1592,7 +1614,7 @@
     }
     if (str_tableUuid.size() > 0) {
         QString sql = QString::fromStdString(
-            "Select a.uuid as id ,a.faceUrl as img,a.feature,b.idCard as idcard,a.enable from '" + str_tableUuid +
+            "Select a.uuid as id ,a.faceUrl as img,a.feature,b.idCard as idcard,a.enable,a.monitorLevel from '" + str_tableUuid +
             "_fea' as a ,'" + str_tableUuid + "' as b  where a.uuid = b.uuid and ( a.del_flag=0 AND b.del_flag=0);");
         QSqlQuery query(g_syncDbFile);
         query.prepare(sql);
@@ -1606,6 +1628,7 @@
                 t_feature_info.feature = query.value(2).toString().toStdString();
                 t_feature_info.idcard = query.value(3).toString().toStdString();
                 t_feature_info.enable = query.value(4).toString().toStdString();
+                t_feature_info.monLevel = query.value(5).toString().toStdString();
 
                 dataCache.insert(std::make_pair(t_feature_info.id, t_feature_info));
             }
@@ -1631,8 +1654,8 @@
     }
     if (str_tableUuid.size() > 0) {
         QString sql = QString::fromStdString(
-            "Select b.uuid as id,b.faceUrl as img,a.idCard as idcard,a.enable from '" + str_tableUuid + "' as a, '" +
-            str_tableUuid + "_fea' As b  where a.uuid = b.uuid and ( a.del_flag=0 AND b.del_flag=0);");
+            "Select b.uuid as id,b.faceUrl as img,a.idCard as idcard,a.enable,a.monitorLevel from '" + str_tableUuid +
+            "' as a, '" + str_tableUuid + "_fea' As b  where a.uuid = b.uuid and ( a.del_flag=0 AND b.del_flag=0);");
         QSqlQuery query(g_syncDbFile);
         query.prepare(sql);
         if (!query.exec()) {
@@ -1644,6 +1667,7 @@
                 t_feature_info.img = query.value(1).toString().toStdString();
                 t_feature_info.idcard = query.value(2).toString().toStdString();
                 t_feature_info.enable = query.value(3).toString().toStdString();
+                t_feature_info.monLevel = query.value(4).toString().toStdString();
 
                 dataCache.insert(std::make_pair(t_feature_info.id, t_feature_info));
             }
diff --git a/syncDBTool/ErlangDbTool.h b/syncDBTool/ErlangDbTool.h
index 347fabd..72cebcd 100755
--- a/syncDBTool/ErlangDbTool.h
+++ b/syncDBTool/ErlangDbTool.h
@@ -266,6 +266,9 @@
                        std::string IdCard = " ", std::string PersonName = " ", std::string Age = " ",
                        std::string Sex = " ", std::string PhoneNum = " ");
 
+        bool
+        ErlangTool::ErlangDbTool::addPerson(std::string t_tableName, AddFaceData &faceData, FieldValues &fieldValues);
+
         bool updatePerson(std::string t_tableName, AddFaceData &faceData, FieldValues &fieldValues);
 
         vec_AddDataCache addPersons(std::string TableUuid, std::vector<SyncDB::AddPersonInfo> &tmpPer);
diff --git a/syncDBTool/SyncDB.hpp b/syncDBTool/SyncDB.hpp
index 8018f7c..20edb66 100755
--- a/syncDBTool/SyncDB.hpp
+++ b/syncDBTool/SyncDB.hpp
@@ -22,6 +22,7 @@
         img,
         idcard,
         enable,
+        monLevel,
         evEnd
     };
 
@@ -38,6 +39,7 @@
         map_Fea_InfoString2Values["img"] = Feature_InfoStringValue::img;
         map_Fea_InfoString2Values["idcard"] = Feature_InfoStringValue::idcard;
         map_Fea_InfoString2Values["enable"] = Feature_InfoStringValue::enable;
+        map_Fea_InfoString2Values["monitorLevel"] = Feature_InfoStringValue::monLevel;
         map_Fea_InfoString2Values["end"] = evEnd;
     }
 
@@ -86,6 +88,9 @@
                     case Feature_InfoStringValue::enable:
                         enable = value;
                         break;
+                    case Feature_InfoStringValue::monLevel:
+                        monLevel = value;
+                        break;
                     default:
                         ERR(key << " is an invalid string. s_mapStringValues now contains "
                                 << map_Fea_InfoString2Values.size() << " entries.");
@@ -108,6 +113,7 @@
         std::string img;
         std::string idcard;
         std::string enable;
+        std::string monLevel;
 
 
 //        value is a atom: atomSize:19, atomValue:test@192.168.50.216

--
Gitblit v1.8.0