From a89689b92b07cf1830ad8b46521eda92e7f927c0 Mon Sep 17 00:00:00 2001
From: pansen <pansen626@sina.com>
Date: 星期三, 30 一月 2019 16:37:45 +0800
Subject: [PATCH] 修改bug

---
 QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.cpp |  146 +++++++++++++++++++-----------------------------
 1 files changed, 57 insertions(+), 89 deletions(-)

diff --git a/QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.cpp b/QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.cpp
index 3047650..b1f942d 100644
--- a/QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.cpp
+++ b/QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.cpp
@@ -55,82 +55,28 @@
     t_live_ret = false;
 }
 
-//#todo 浼樺寲
+/***
+ * @dep
+ */
 ::FaceSearch::FaceResults
 FaceFeatureSearchServerI::faceSearchMax(const ::FaceSearch::Data &feature, const ::std::string &info_json,
                                         const ::Ice::Current &) {
-    thread::id key = std::this_thread::get_id();
-    ClockTimer clockTimer("faceSearchMax");
-    ::FaceSearch::FaceResults results;
-    FaceResults t_TableCompareResult;
-    AlarmData featureData;
-    featureData.num = 1;
-    featureData.feature.resize(feature.size());
-    memcpy(featureData.feature.data(), feature.data(), feature.size());
-
-    for (auto &it : m_faceFCMAP) {
-        auto &t_FaceFC = it.second;
-        auto t_tableInfo = m_tableType[it.first];
-        bool ret = getRet(t_tableInfo.startTime, t_tableInfo.endTime);
-        if (ret) {
-            bool alarmRet = atoi(t_tableInfo.bwType.c_str());
-            //#todo 闈炲悓姝ュ簱鏄惁闇�瑕佹瘮杈冿紵
-            t_FaceFC->compare(key, &featureData, 1);
-            auto t_results = t_FaceFC->getTopResult(key);
-            for (auto &t_item : t_results) {
-                t_item.tableName = it.first;
-                //#todo baojing zhuangtai ?
-                t_item.alarmRet = ret;
-                t_TableCompareResult.push_back(t_item);
-            }
-        }
-    }
-
-//    DBG("t_TableCompareResult size" << t_TableCompareResult.size());
-    for (auto itor = t_TableCompareResult.begin(); itor != t_TableCompareResult.end(); ++itor) {
-        float new_confidence = itor->confidence;
-        auto rtTR = results.rbegin();
-        if (!results.empty()) {
-            auto temp = rtTR->confidence;
-            while (new_confidence > temp) {
-                ++rtTR;
-                if (rtTR == (results.rend() + 1)) {
-                    rtTR--;
-                    break;
-                } else {
-//                    DBG(" sc is "<< new_confidence << "  > " << temp);
-                }
-                temp = rtTR->confidence;
-            }
-        } else {
-//            INFO("topResult is null");
-        }
-        auto itTR(rtTR.base());
-        ::FaceSearch::FaceResult t_faceCR;
-        t_faceCR.id = itor->id;
-        t_faceCR.uuid = itor->uuid;
-        t_faceCR.tableName = itor->tableName;
-        t_faceCR.confidence = itor->confidence;
-        DBG("compare results tablename is " << t_faceCR.tableName << " id is " << t_faceCR.uuid << " sc is"
-                                            << t_faceCR.confidence);
-        results.insert(itTR, t_faceCR);
-    }
-
-
-    //#todo send message
-
-    return results;
+    return ::FaceSearch::FaceResults();
 }
 
 //#todo 浼樺寲
 ::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();
+//    杩斿洖缁撴灉
     ::FaceSearch::FaceResults results;
+//    瀵规瘮缁撴灉鐨勪复鏃剁紦瀛�
     FaceResults t_TableCompareResult;
+//    闇�瑕佸姣旂殑鏁版嵁
     AlarmData featureData;
     featureData.num = topN;
     featureData.feature.resize(feature.size());
@@ -141,41 +87,55 @@
 
     if (reader.parse(info_json, value)) {
         //#todo
-
         m_rwLock.rdlock();
-        std::string feature_base64;
-        feature_base64 = base64.Encode(feature.data(), feature.size());
-        value["FaceFeature"] = feature_base64;
+//        寮�濮嬪姣�
         DBG("auto &it : m_faceFCMAP start " << m_faceFCMAP.size());
         //#todo lock
+//        閬嶅巻涓嶅悓鐨勫簳搴撶被#TODO鏄惁瑕佸仛涓�娆″ぇ鑼冨洿瀵规瘮鐒跺悗缁欏嚭缁撴灉鍐嶇瓫閫夛紵
         for (auto &it : m_faceFCMAP) {
             auto &t_FaceFC = it.second;
+//            琛ㄧ殑淇℃伅#TODO寰呯Щ鍑哄拰涓氬姟瑙h��
             auto t_tableInfo = m_tableType[it.first];
-            bool ret = getRet(t_tableInfo.startTime, t_tableInfo.endTime);
+//            鍒ゆ柇琛ㄧ殑鐢熸晥鐘舵�侊紝鍐冲畾鏄惁杩涜瀵规瘮/鏃堕棿鍜屽惎鐢ㄧ姸鎬�
+            bool ret = (t_tableInfo.enabled == "1" && getRet(t_tableInfo.startTime, t_tableInfo.endTime));
             if (ret) {
+//                闇�瑕佸姣�
+
+//                琛ㄧ殑绫诲瀷/榛戠櫧鍚嶅崟
                 string t_alarmRet = t_tableInfo.bwType;
 //                bool alarmRet = atoi(t_tableInfo.bwType.c_str());
                 //#todo 闈炲悓姝ュ簱鏄惁闇�瑕佹瘮杈冿紵
 
                 DBG("m_faceFCMAP compare start " << it.first);
-                t_FaceFC->compare(key, &featureData, topN);
+//                瀵规瘮鍒嗘暟,鎽勫儚鏈哄垎鏁板拰甯冩帶搴撳垎鏁帮紝璋佷綆鎸夎皝?鏆傛椂涓嶅仛
+//                if(){
+//                }
+//                score
+//                瀵规瘮鍑芥暟
+                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);
+//                閬嶅巻缁撴灉骞舵坊鍔犺ˉ鍏呭瓧娈�
                 for (auto &t_item : t_results) {
                     t_item.tableName = it.first;
                     t_item.alarmRet = t_alarmRet;
+//                    鏀惧叆鏈浠诲姟鐨勫姣旂紦瀛�
                     t_TableCompareResult.push_back(t_item);
+//                    DBG("t_results item : uuid is " << t_item.uuid << " confidence " << t_item.confidence << it.first);
                 }
             } else {
+//                涓嶉渶瑕佸姣�
                 INFO("m_faceFCMAP ret is false " << it.first);
             }
         }
         m_rwLock.unlock();
         DBG("auto &it : m_faceFCMAP end");
-
-//        DBG("t_TableCompareResult size" << t_TableCompareResult.size());
+//        鏈浠诲姟鐨勫姣旂粨鏋滄暟閲�
+        DBG("t_TableCompareResult size" << t_TableCompareResult.size());
         //sort_all_results
+//        鎵�鏈夎〃瀵规瘮缁撴潫鍚庯紝鎺掑簭鍙婄粨鏋滄牸寮忚浆鎹�
         for (auto itor = t_TableCompareResult.begin(); itor != t_TableCompareResult.end(); ++itor) {
             float new_confidence = itor->confidence;
             auto rtTR = results.rbegin();
@@ -203,24 +163,32 @@
             t_faceCR.imgUrl = itor->face_img_url;
             t_faceCR.idcard = itor->idCard;
             t_faceCR.alarmRet = itor->alarmRet;
-//            DBG("compare results tablename is " << t_faceCR.tableName << " id is " << t_faceCR.uuid << " sc is"
-//                                                << t_faceCR.confidence);
+            DBG("compare results tablename is " << t_faceCR.tableName << " id is " << t_faceCR.uuid << " pic n "
+                                                << t_faceCR.idcard << " sc is" << t_faceCR.confidence);
             results.insert(itTR, t_faceCR);
         }
         bool retface = true;
-//        cout << __FUNCTION__ << " -> " << __LINE__ << " ->  " << results.size() << endl;
+
         //#todo send message
+//        鎷兼帴闇�瑕佸彂閫佺殑娑堟伅
+//        鐗瑰緛缂栫爜涓篵ase64鐢ㄤ簬涓婁紶锛�#todo 鎷嗚В鍒板闈㈠幓鍋�
+        std::string feature_base64;
+        feature_base64 = base64.Encode(feature.data(), feature.size());
         if (results.size() > 0) {
+//            鎵惧埌鐩镐技浜� 鍙兘瀵规瘮鍒嗘暟涓嶆弧瓒虫潯浠�
+//            #TODO澶氭潯瀵规瘮缁撴灉鎷兼帴鎴愪竴涓爣绛�
             for (auto &item : results) {
                 //#todo 寰楀垎姣旇緝锛屽簲璇ュ湪compare涓繘琛�
+//                灏忎簬鎸囧畾鐨勯槇鍊煎垯璁や负娌℃湁鎵惧埌鏄檶鐢熶汉
                 if (item.confidence < score) {
                     //#todo test
                     auto str_uuid = value["Id"].asString();
                     value["personIsHub"] = "4";
                     value["likePer"] = 0.0;
 //                    DBG(value.toStyledString());
-                    cout << __FUNCTION__ << " -> " << __LINE__ << " ->  " << "value.toStyledString()  "
-                         << value.toStyledString() << endl;
+                    DBG("value.toStyledString()  " << value.toStyledString());
+                    value["FaceFeature"] = feature_base64;
+
                     retface = pManagerEsDB.insertData("videopersons", "perVideoPicture", value.toStyledString(),
                                                       str_uuid);
                     break;
@@ -239,16 +207,20 @@
 
                 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 濡傛灉鍚敤鍒欐甯稿垽鏂�,鏈竷鎺у垯璁や负鏄湭鐭ワ紵
+//                if () {
+//
+//                }
                 value["personIsHub"] = item.alarmRet.size() > 0 ? item.alarmRet : "4";
 
                 auto str_uuid = value["Id"].asString();
-//                DBG(value.toStyledString());
+                DBG("value.toStyledString()  " << value.toStyledString());
+                value["FaceFeature"] = feature_base64;
 
-                cout << __FUNCTION__ << " -> " << __LINE__ << " ->  " << "value.toStyledString()  "
-                     << value.toStyledString() << "\n score   " << score << endl;
-//                DBG("score  " << score);
                 retface = pManagerEsDB.insertData("videopersons", "perVideoPicture", value.toStyledString(),
                                                   str_uuid);
                 break;
@@ -258,6 +230,7 @@
             value["personIsHub"] = "4";
             value["likePer"] = 0.0;
             DBG(value.toStyledString());
+            value["FaceFeature"] = feature_base64;
 //            cout << __FUNCTION__ << " -> " << __LINE__ << " ->  " << "value.toStyledString()  "
 //                 << value.toStyledString() << endl;
             retface = pManagerEsDB.insertData("videopersons", "perVideoPicture", value.toStyledString(),
@@ -271,13 +244,6 @@
     } else {
         ERR("json is error" << info_json);
     }
-
-
-
-
-//    for (auto &item : t_tables) {
-//        DBG(item);
-//    }
     return results;
 }
 
@@ -288,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();
 
@@ -307,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;

--
Gitblit v1.8.0