From ed223aee5fe5f3b222488549597976f34c679c3d Mon Sep 17 00:00:00 2001
From: pansen <pansen626@sina.com>
Date: 星期二, 05 三月 2019 14:00:47 +0800
Subject: [PATCH] 代码格式化及部分bug修改

---
 QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.h              |    4 
 QiaoJiaSystem/VideoServer/QiaoJia/DB/DBStruct.h                  |   94 ++---
 QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.cpp            |  100 ++++--
 QiaoJiaSystem/DataManagerServer/CMakeLists.txt                   |    2 
 QiaoJiaSystem/VideoAnalysFromHC/BaiscSDKAnalysVideo.h            |   54 +-
 QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp |    2 
 QiaoJiaSystem/VideoToImageMulth/main.cpp                         |   24 +
 QiaoJiaSystem/VideoAnalysFromHC/main.cpp                         |   14 
 QiaoJiaSystem/StructureApp/FaceRpcElement.cpp                    |  103 +++----
 QiaoJiaSystem/DataManagerServer/vss/dao/BaseDao.h                |    4 
 QiaoJiaSystem/StructureApp/AppPipeController.h                   |    6 
 QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp            |  109 ++++++-
 QiaoJiaSystem/FaceSearchServer/main.cpp                          |    2 
 QiaoJiaSystem/FaceDetectServer/main_detect.cpp                   |    2 
 QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.cpp                 |  237 +++++++---------
 QiaoJiaSystem/VideoToImageMulth/CMakeLists.txt                   |    6 
 QiaoJiaSystem/FaceSearchServer/CMakeLists.txt                    |    2 
 QiaoJiaSystem/VideoAnalysFromHC/CMakeLists.txt                   |    3 
 QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.h              |    3 
 QiaoJiaSystem/CMakeLists.txt                                     |    2 
 QiaoJiaSystem/StructureApp/FaceExtractElement.cpp                |   30 -
 21 files changed, 440 insertions(+), 363 deletions(-)

diff --git a/QiaoJiaSystem/CMakeLists.txt b/QiaoJiaSystem/CMakeLists.txt
index a2e7f1d..1db175e 100644
--- a/QiaoJiaSystem/CMakeLists.txt
+++ b/QiaoJiaSystem/CMakeLists.txt
@@ -34,6 +34,6 @@
 #add_subdirectory(VideoToImage)
 add_subdirectory(UnitTest)
 add_subdirectory(VideoToImageMulth)
-add_subdirectory(GB28181DecoderModel)
+#add_subdirectory(GB28181DecoderModel)
 #add_subdirectory(FaceSearchDbWithImg)
 
diff --git a/QiaoJiaSystem/DataManagerServer/CMakeLists.txt b/QiaoJiaSystem/DataManagerServer/CMakeLists.txt
index d6a2220..e36f449 100644
--- a/QiaoJiaSystem/DataManagerServer/CMakeLists.txt
+++ b/QiaoJiaSystem/DataManagerServer/CMakeLists.txt
@@ -154,7 +154,7 @@
     HCCore
     hcnetsdk
     pthread
-#    mysqlpp
+    mysqlpp
     )
 
 #add_executable(Apptest
diff --git a/QiaoJiaSystem/DataManagerServer/vss/dao/BaseDao.h b/QiaoJiaSystem/DataManagerServer/vss/dao/BaseDao.h
index 1852583..636a246 100644
--- a/QiaoJiaSystem/DataManagerServer/vss/dao/BaseDao.h
+++ b/QiaoJiaSystem/DataManagerServer/vss/dao/BaseDao.h
@@ -134,10 +134,10 @@
 //                    appConfig.getIntProperty("db_port")
 //            )) {
         if (conn->connect(
-                "basic_business_table",
+                "EGEyesForVSS",
                 "127.0.0.1",
                 "root",
-                "root",
+                "123456",
                 3306
         )) {
             cout << "connect success" << endl;
diff --git a/QiaoJiaSystem/FaceDetectServer/main_detect.cpp b/QiaoJiaSystem/FaceDetectServer/main_detect.cpp
index e086792..dabd089 100644
--- a/QiaoJiaSystem/FaceDetectServer/main_detect.cpp
+++ b/QiaoJiaSystem/FaceDetectServer/main_detect.cpp
@@ -47,7 +47,7 @@
     ENABLEGLOG(GET_STR_CONFIG("logPath").c_str());
     auto ich = Ice::initialize(argc, argv);
 
-    appPref.setLongData("gpu.index", 1);
+    appPref.setLongData("gpu.index", 0);
     appPref.setLongData("thread.max", 32);
 
     IceRpcServer<FaceDetectServerI> server("faceServer", 10002, "tcp");
diff --git a/QiaoJiaSystem/FaceSearchServer/CMakeLists.txt b/QiaoJiaSystem/FaceSearchServer/CMakeLists.txt
index f214035..26f313c 100644
--- a/QiaoJiaSystem/FaceSearchServer/CMakeLists.txt
+++ b/QiaoJiaSystem/FaceSearchServer/CMakeLists.txt
@@ -73,7 +73,7 @@
     ../../../BasicPlatForm/libs/Ice-3.7.0/lib64
     ../../../BasicPlatForm/libs/opencv/lib
     ../../../BasicPlatForm/libs/ffmpeg/lib
-    ../../../BasicPlatForm/libs/Casia_Face/FaceSdk/lib/cpu
+    ../../../BasicPlatForm/libs/Casia_Face/FaceSdk/lib/gpu
     ../../../BasicPlatForm/libs/crul/lib
     ../../../BasicPlatForm/libs/jsoncpp/lib
     ../../../BasicPlatForm/libs/libuuid/lib
diff --git a/QiaoJiaSystem/FaceSearchServer/main.cpp b/QiaoJiaSystem/FaceSearchServer/main.cpp
index bfbebd2..fa14be5 100644
--- a/QiaoJiaSystem/FaceSearchServer/main.cpp
+++ b/QiaoJiaSystem/FaceSearchServer/main.cpp
@@ -21,7 +21,7 @@
 
     DBG("\n\n\nstart\n\n");
 
-    appPref.setLongData("thread.max", 32);
+    appPref.setLongData("thread.max", 16);
     //#todo
 
 //    appPref.setStringData("ipAdd", "192.168.1.185");
diff --git a/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp b/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp
index 8bc24d3..d2b30cd 100644
--- a/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp
+++ b/QiaoJiaSystem/GB28181DecoderModel/VideoCaptureElementWithRtp.cpp
@@ -6,7 +6,7 @@
 #include <qt5/QtCore/QDateTime>
 #include <basic/util/app/AppPreference.hpp>
 #include "VideoCaptureElementWithRtp.h"
-#include "RtspAnalysManager.h"
+#include <VideoToImageMulth/RtspAnalysManager.h>
 
 //std::string BASICGB28181::VideoCaptureElementWithRtp::m_chanPubID;
 //BASICGB28181::FFmpegDecoderJPG BASICGB28181::VideoCaptureElementWithRtp::m_fFmpegDecoderJPG;
diff --git a/QiaoJiaSystem/StructureApp/AppPipeController.h b/QiaoJiaSystem/StructureApp/AppPipeController.h
index 2018f12..367af7a 100644
--- a/QiaoJiaSystem/StructureApp/AppPipeController.h
+++ b/QiaoJiaSystem/StructureApp/AppPipeController.h
@@ -116,10 +116,10 @@
     int m_index;
     std::string m_camId;
     std::string m_folderPath;
-    Json::Value m_json;
-    Json::Value m_json_Record;
+//    Json::Value m_json;
+//    Json::Value m_json_Record;
+//    Json::FastWriter m_fastWriter;
 
-    Json::FastWriter m_fastWriter;
     FastFdsWithLock *fdfsClient;
 
     bool bRecordVideoEnable;
diff --git a/QiaoJiaSystem/StructureApp/FaceExtractElement.cpp b/QiaoJiaSystem/StructureApp/FaceExtractElement.cpp
index b0eab37..679aaf6 100644
--- a/QiaoJiaSystem/StructureApp/FaceExtractElement.cpp
+++ b/QiaoJiaSystem/StructureApp/FaceExtractElement.cpp
@@ -38,8 +38,7 @@
                         appPref.getIntData("faceSear.port"), "tcp"),
 //    faceSearchRpcClient("faceCmServer", "", 10004, "tcp")
     m_sdkRule(rule),
-    m_rpcClient("RtspAnalysServer", "127.0.0.1",appPref.getIntData("RpcServerPort"),"tcp")
-{
+    m_rpcClient("RtspAnalysServer", "127.0.0.1", appPref.getIntData("RpcServerPort"), "tcp") {
     sharedMemory = new QSharedMemory(QString(shareMemoryName.c_str()));
     if (!sharedMemory->create(4608 * 2592 * 4)) {
         sharedMemory->attach();
@@ -66,8 +65,7 @@
     std::vector<FaceToExtract> faceExtractQueueTmp;
     {
         std::lock_guard<std::mutex> lg(imageQueueMutex);
-        if (faceExtractQueue.empty())
-        {
+        if (faceExtractQueue.empty()) {
             ERR("faceExtractQueue.empty ");
             return;
         }
@@ -106,7 +104,7 @@
 //                    cv::imwrite(string1, image);
 //                }
                 if (feature.empty()) {
-                    INFO("No Face Find: "<<getProperty("imgKey"));
+                    INFO("No Face Find: " << getProperty("imgKey"));
                     continue;
                 }
                 features.clear();
@@ -119,8 +117,8 @@
                     CvUtil::cvMat2Buffer(faceExtractQueueTmp[i].faceImages[j], buffer);
                     std::string strImgUrlTmp = "";
                     fdfsClient->fastFds->uploadFile(buffer, strImgUrlTmp, "jpg");
-                  //  strImgUrl.append(fdfsClient->fastFds->getIp() + "/" + strImgUrlTmp);
-                    DBG("strImgUrlTmp="<<strImgUrlTmp);
+                    //  strImgUrl.append(fdfsClient->fastFds->getIp() + "/" + strImgUrlTmp);
+                    DBG("strImgUrlTmp=" << strImgUrlTmp);
                     strImgUrl.clear();
                     strImgUrl = strImgUrlTmp;
 //                    strImgUrl.append("/").append(strImgUrlTmp);
@@ -151,7 +149,7 @@
 
                 t_json["personPicUrl"] = "";//浜哄憳鍥剧墖 store
                 t_json["picAddress"] = getProperty("str_addr");//鎶撴媿鍦板潃
-                  DBG("picAddress="<< t_json["picAddress"] );
+                DBG("picAddress=" << t_json["picAddress"]);
                 t_json["picMaxUrl"] = "";//澶у浘璺緞
                 t_json["picLocalUrl"] = "";//鏈湴璺緞
                 t_json["picSmUrl"] = strImgUrl;//浜哄憳鎶撳皬鍥�
@@ -163,7 +161,8 @@
 
                 t_json["content"] = "";
                 //t_json["viType"] = "2";//鍙湁4绉嶇被鍨� 1:personface 2:personbody 3:car 4:bicycle 5:none 鏈煡绫诲瀷
-                t_json["sdkType"] = std::to_string(m_sdkRule.nSdkType);//鍙湁4绉嶇被鍨� 1:personface 2:personbody 3:car 4:bicycle 5:none 鏈煡绫诲瀷
+                t_json["sdkType"] = std::to_string(
+                    m_sdkRule.nSdkType);//鍙湁4绉嶇被鍨� 1:personface 2:personbody 3:car 4:bicycle 5:none 鏈煡绫诲瀷
                 t_json["personIsHub"] = "4";//1: 鎶ヨ  2: 鍙枒  3: 瀹夊叏  4: 鏈煡
 
 
@@ -219,22 +218,19 @@
                 t_json["indevicename"] = appPref.getStringData("fxDevNAME");
 
                 std::string strImageKey = faceExtractQueueTmp[i].scoredRects[j].properties["imgKey"];
-                INFO("SaveImageKey To ES: "<<strImageKey);
+                INFO("SaveImageKey To ES: " << strImageKey);
                 t_json["imgKey"] = strImageKey;
 
                 try {
                     auto server = m_rpcClient.getServer();
-                    if (!server)
-                    {
+                    if (!server) {
                         ERR("server is null");
                         //return;
                     }
-                    INFO("Record Video "<<strImageKey);
+                    INFO("Record Video " << strImageKey);
                     server->recordVideo(strImageKey);
-                }
-                catch (std::exception &e)
-                {
-                    ERR("Record Video Err: "<<strImageKey <<"   Message: "<<e.what());
+                } catch (std::exception &e) {
+                    ERR("Record Video Err: " << strImageKey << "   Message: " << e.what());
                     //return;
                 }
                 auto faceSearchServer = faceSearchRpcClient.getServer();
diff --git a/QiaoJiaSystem/StructureApp/FaceRpcElement.cpp b/QiaoJiaSystem/StructureApp/FaceRpcElement.cpp
index 9ab6f01..8ff149f 100644
--- a/QiaoJiaSystem/StructureApp/FaceRpcElement.cpp
+++ b/QiaoJiaSystem/StructureApp/FaceRpcElement.cpp
@@ -6,6 +6,7 @@
 #include <basic/util/opencv/CvUtil.h>
 #include <QJsonDocument>
 #include <QJsonObject>
+
 #define GETSCORE(IDENT) appPref.getFloatData(IDENT) == -1 ? 95 : appPref.getFloatData(IDENT);
 
 //************************************
@@ -30,7 +31,7 @@
 }
 
 //todo  appPref.getStringData("face.detect.proxy")
-FaceRpcElement::FaceRpcElement(string shareMemoryName,const SdkRule& rule) :
+FaceRpcElement::FaceRpcElement(string shareMemoryName, const SdkRule &rule) :
 //#todo
     rpcClient(appPref.getStringData("faceDete.proxy"), appPref.getStringData("faceDete.ip"),
               appPref.getIntData("faceDete.port"), "tcp"),
@@ -40,8 +41,7 @@
     trackingTrigger(nullptr),
     m_sdkRule(rule),
     m_bIsMask(true),
-    m_bSetWH(false)
-{
+    m_bSetWH(false) {
     sharedMemory = new QSharedMemory(QString(shareMemoryName.c_str()));
     if (!sharedMemory->create(4608 * 2592 * 4)) {
         sharedMemory->attach();
@@ -50,21 +50,21 @@
 
 //    string t_camIdex = getProperty("dev_id");
     //#todo
-    string t_camIdex;
-    if (shareMemoryName.find("/")) {
-        string_replace(shareMemoryName, "//", "/");
-        auto dev_pos = shareMemoryName.find("/cut/") + 5;
-        auto ch_pos = shareMemoryName.find("/", dev_pos) + 1;
-        auto str_device_id = shareMemoryName.substr(dev_pos, ch_pos - dev_pos - 1);
-        auto str_ch_id = shareMemoryName.substr(ch_pos, shareMemoryName.find("/", ch_pos) - ch_pos);
-        t_camIdex.append(str_device_id).append(str_ch_id);
-    } else {
-        t_camIdex = shareMemoryName.substr(0, shareMemoryName.rfind("faceRpc"));
-    }
+//    string t_camIdex;
+//    if (shareMemoryName.find("/")) {
+//        string_replace(shareMemoryName, "//", "/");
+//        auto dev_pos = shareMemoryName.find("/cut/") + 5;
+//        auto ch_pos = shareMemoryName.find("/", dev_pos) + 1;
+//        auto str_device_id = shareMemoryName.substr(dev_pos, ch_pos - dev_pos - 1);
+//        auto str_ch_id = shareMemoryName.substr(ch_pos, shareMemoryName.find("/", ch_pos) - ch_pos);
+//        t_camIdex.append(str_device_id).append(str_ch_id);
+//    } else {
+//        t_camIdex = shareMemoryName.substr(0, shareMemoryName.rfind("faceRpc"));
+//    }
 
     float t_score = m_sdkRule.nQuality;
 
-    DBG(" TESTCODE  getValue" << t_camIdex << "  " << t_score << " " << t_score / 100);
+    DBG(" TESTCODE  getValue" << shareMemoryName << "  " << t_score << " " << t_score / 100);
 
     t_score = t_score / 100;
 
@@ -89,8 +89,7 @@
 //        string string1(AppUtil::getTimeString() + "-ff2" + getProperty("time") + ".jpg");
 //        cv::imwrite(string1, image);
 //    }
-    if(!isInWeek(m_sdkRule.weekRuleVec))
-    {
+    if (!isInWeek(m_sdkRule.weekRuleVec)) {
         ERR("In Week");
         return;
     }
@@ -110,11 +109,10 @@
             int y = face.rcFace.top;
             int w = face.rcFace.right - face.rcFace.left;
             int h = face.rcFace.bottom - face.rcFace.top;
-            QRect re(x,y,w,h);
+            QRect re(x, y, w, h);
             QPoint center = re.center();
-            if(m_bIsMask && !mPolygon.containsPoint(center,Qt::OddEvenFill))
-            {
-                ERR("m_bIsMask :"<<m_bIsMask)
+            if (m_bIsMask && !mPolygon.containsPoint(center, Qt::OddEvenFill)) {
+                ERR("m_bIsMask :" << m_bIsMask)
                 return;
             }
             scoredRect.rect = {x, y, w, h};
@@ -131,19 +129,18 @@
                 trackingTrigger->getLastRect().properties["time"] = getProperty("time");
                 trackingTrigger->getLastRect().properties["detectscore"] = scoredRect.score;
                 trackingTrigger->getLastRect().properties["imgKey"] = getProperty("imgKey");
-                INFO("FaceRpcElement SaveToES: "<<getProperty("imgKey"));
+                INFO("FaceRpcElement SaveToES: " << getProperty("imgKey"));
                 triggerFaces.push_back(face);
                 triggerMats.push_back(image(
                     CvUtil::zoomRectEqual(scoredRect.rect, 1.5, 1.5) & cv::Rect(0, 0, image.cols, image.rows)).clone());
                 triggerScoredRects.push_back(trackingTrigger->getLastRect());
             } else {
-                INFO("No Face Find: "<<getProperty("imgKey"));
+                INFO("No Face Find: " << getProperty("imgKey"));
 //                DBG("trackingTrigger->triggerOnce(scoredRect) is false  ");
             }
         }
-        if(faces.empty())
-        {
-            INFO("No Face Find: "<<getProperty("imgKey"));
+        if (faces.empty()) {
+            INFO("No Face Find: " << getProperty("imgKey"));
         }
         trackingTrigger->triggerLine();
         //        DBG("faces.size  " << faces.size());
@@ -190,60 +187,54 @@
         image = cv::Mat(value.rows, value.cols, CV_8UC3, sharedMemory->data());
     }
     value.copyTo(image);
-    if(!m_bSetWH)
-    {
+    if (!m_bSetWH) {
         setMask(m_sdkRule.strAreas.toStdString());
-        m_bSetWH=true;
+        m_bSetWH = true;
     }
 }
 
 bool FaceRpcElement::getTriggerState() const {
     return m_triggerElement.getTriggerState();
 }
-void FaceRpcElement::setMask(std::string mask)
-{
+
+void FaceRpcElement::setMask(std::string mask) {
     QJsonArray arrayAreas = getJsonArrayFromQString(QString::fromStdString(mask));
-    if(arrayAreas.isEmpty())
-    {
-        m_bIsMask=false;
+    if (arrayAreas.isEmpty()) {
+        m_bIsMask = false;
         return;//do not detect
     }
-    float sizeW=(float)appPref.getIntData(m_sdkRule.strCamId.toStdString()+"width")/480;
-    float sizeH=(float)appPref.getIntData(m_sdkRule.strCamId.toStdString()+"height")/270;
-    for(int i = 0;i < arrayAreas.size();++i)
-    {
+    float sizeW = (float) appPref.getIntData(m_sdkRule.strCamId.toStdString() + "width") / 480;
+    float sizeH = (float) appPref.getIntData(m_sdkRule.strCamId.toStdString() + "height") / 270;
+    for (int i = 0; i < arrayAreas.size(); ++i) {
         QJsonValue jsonValue = arrayAreas[i];
         QJsonObject obj = jsonValue.toObject();
-        int x = obj.value("x").toDouble() *sizeW ;
-        int y = obj.value("y").toDouble() *sizeH;
-        mPolygon<<(QPoint(x,y));
-        DBG("width="<<sizeW);
-        DBG("height="<<sizeH);
+        int x = obj.value("x").toDouble() * sizeW;
+        int y = obj.value("y").toDouble() * sizeH;
+        mPolygon << (QPoint(x, y));
+        DBG("width=" << sizeW);
+        DBG("height=" << sizeH);
 
     }
 }
-QJsonArray FaceRpcElement::getJsonArrayFromQString(const QString& strJson)
-{
+
+QJsonArray FaceRpcElement::getJsonArrayFromQString(const QString &strJson) {
     QJsonDocument jsonDocument = QJsonDocument::fromJson(strJson.toLocal8Bit());
-    if( jsonDocument.isNull() ){
-        DBG("please check the string"<< strJson.toStdString());
+    if (jsonDocument.isNull()) {
+        DBG("please check the string" << strJson.toStdString());
         return QJsonArray();
     }
     QJsonArray jsonArray = jsonDocument.array();
     return jsonArray;
 }
-bool FaceRpcElement::isInWeek(const std::vector<LActRuleWeekRecord>& ruleWeek)
-{
+
+bool FaceRpcElement::isInWeek(const std::vector<LActRuleWeekRecord> &ruleWeek) {
 
     int nWeek = QDate::currentDate().dayOfWeek();
-    for(int i = 0;i < ruleWeek.size();++i)
-    {
-        if(ruleWeek[i].m_nType == nWeek)
-        {
+    for (int i = 0; i < ruleWeek.size(); ++i) {
+        if (ruleWeek[i].m_nType == nWeek) {
             QString strCurrent = QDateTime::currentDateTime().toString("hh:mm");
-            if(strCurrent >= ruleWeek[i].m_strBegin && strCurrent <= ruleWeek[i].m_strEnd)
-            {
-               return true;
+            if (strCurrent >= ruleWeek[i].m_strBegin && strCurrent <= ruleWeek[i].m_strEnd) {
+                return true;
             }
         }
     }
diff --git a/QiaoJiaSystem/VideoAnalysFromHC/BaiscSDKAnalysVideo.h b/QiaoJiaSystem/VideoAnalysFromHC/BaiscSDKAnalysVideo.h
index 622bc1e..991d212 100644
--- a/QiaoJiaSystem/VideoAnalysFromHC/BaiscSDKAnalysVideo.h
+++ b/QiaoJiaSystem/VideoAnalysFromHC/BaiscSDKAnalysVideo.h
@@ -23,38 +23,38 @@
     using TASK_FUNCTION = std::function<void(std::shared_ptr<finishSdkHdlManage> &, int)>;
 public:
     BaiscSDKAnalysVideo(TASK_FUNCTION task_f = nullptr) : m_task_function(task_f) {
-        resetFdfs();
-        {
-            std::thread httpServer([&]() {
-                HttpSrvRetRecieve httpSrvRetRecieve("0.0.0.0", 9090, 1);
-                httpSrvRetRecieve.setInfo("^/resetFdfs$", "POST", std::bind(&BaiscSDKAnalysVideo::resetFdfs, this,
-                                                                            std::placeholders::_1,
-                                                                            std::placeholders::_2,
-                                                                            std::placeholders::_3));
-                httpSrvRetRecieve.start();
-                httpSrvRetRecieve.waitForShutDown();
-            });
-            httpServer.detach();
-        }
+//        resetFdfs();
+//        {
+//            std::thread httpServer([&]() {
+//                HttpSrvRetRecieve httpSrvRetRecieve("0.0.0.0", 9090, 1);
+//                httpSrvRetRecieve.setInfo("^/resetFdfs$", "POST", std::bind(&BaiscSDKAnalysVideo::resetFdfs, this,
+//                                                                            std::placeholders::_1,
+//                                                                            std::placeholders::_2,
+//                                                                            std::placeholders::_3));
+//                httpSrvRetRecieve.start();
+//                httpSrvRetRecieve.waitForShutDown();
+//            });
+//            httpServer.detach();
+//        }
     }
 
     ~BaiscSDKAnalysVideo() {
     }
 
-    std::string resetFdfs(std::string ip = "", unsigned int port = 0, std::string content = "") {
-
-        std::thread reset([&]() {
-            fdfsClient.rwLock.rdlock();
-            if (fdfsClient.fastFds != nullptr) {
-                delete fdfsClient.fastFds;
-            }
-            fdfsClient.fastFds = new FastFds("fastDfsClient.conf");
-            fdfsClient.rwLock.unlock();
-        });
-        reset.detach();
-
-        return "";
-    }
+//    std::string resetFdfs(std::string ip = "", unsigned int port = 0, std::string content = "") {
+//
+//        std::thread reset([&]() {
+//            fdfsClient.rwLock.rdlock();
+//            if (fdfsClient.fastFds != nullptr) {
+//                delete fdfsClient.fastFds;
+//            }
+//            fdfsClient.fastFds = new FastFds("fastDfsClient.conf");
+//            fdfsClient.rwLock.unlock();
+//        });
+//        reset.detach();
+//
+//        return "";
+//    }
 
 private:
     virtual void doFunc(std::shared_ptr<getsdkHdlManage> spPacket) {
diff --git a/QiaoJiaSystem/VideoAnalysFromHC/CMakeLists.txt b/QiaoJiaSystem/VideoAnalysFromHC/CMakeLists.txt
index d0067c6..0d4e6e6 100644
--- a/QiaoJiaSystem/VideoAnalysFromHC/CMakeLists.txt
+++ b/QiaoJiaSystem/VideoAnalysFromHC/CMakeLists.txt
@@ -9,6 +9,7 @@
 set(CMAKE_BUILD_TYPE debug)
 add_compile_options(-fPIC)
 add_definitions(-DGLOG)
+add_definitions(-DGB28181)
 add_definitions(-DDEBUG_ERR -DDEBUG_INFO -fpermissive)
 SET(SOURCES
 
@@ -161,7 +162,7 @@
     #    cudart
     #    cublas
     opencv_world
-    jsoncpp
+#    jsoncpp
     curl
     uuid
     pthread
diff --git a/QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.cpp b/QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.cpp
index 0058a02..efb8645 100644
--- a/QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.cpp
+++ b/QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.cpp
@@ -10,24 +10,24 @@
 
 //RtspAnalysElement::RtspAnalysElement() {}
 
-std::string RtspAnalysElement::resetFdfs(std::string ip, unsigned int port, std::string content) {
-
-    std::thread reset([&]() {
-        fdfsClient.rwLock.rdlock();
-        if (fdfsClient.fastFds != nullptr) {
-            delete fdfsClient.fastFds;
-        }
-        fdfsClient.fastFds = new FastFds("fastDfsClient.conf");
-        fdfsClient.rwLock.unlock();
-    });
-    reset.detach();
-
-    return "";
-}
+//std::string RtspAnalysElement::resetFdfs(std::string ip, unsigned int port, std::string content) {
+//
+//    std::thread reset([&]() {
+//        fdfsClient.rwLock.rdlock();
+//        if (fdfsClient.fastFds != nullptr) {
+//            delete fdfsClient.fastFds;
+//        }
+//        fdfsClient.fastFds = new FastFds("fastDfsClient.conf");
+//        fdfsClient.rwLock.unlock();
+//    });
+//    reset.detach();
+//
+//    return "";
+//}
 
 RtspAnalysElement::RtspAnalysElement(LDBTool *_dbTool) : m_lDBTool(_dbTool), maxCount(50), currentCount(0) {
     init();
-    resetFdfs();
+//    resetFdfs();
     {
 //        std::thread httpServer([&]() {
 //            //#todo port
@@ -68,8 +68,9 @@
 }
 
 void RtspAnalysElement::init() {
-    auto lst = m_lDBTool->searchCamDevTableAll();
     Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo();
+#ifndef GB28181
+    auto lst = m_lDBTool->searchCamDevTableAll();
 
     appPref.setIntData("n_cut_max_duration", lst_dev.n_cut_max_duration);
     appPref.setIntData("n_cut_min_duration", lst_dev.n_cut_min_duration);
@@ -79,19 +80,17 @@
         int CamCount = appPref.getIntData("CamStep");
         auto itor = lst.begin();
 
-        if(startCamNO >= lst.size())
-        {
+        if (startCamNO >= lst.size()) {
             ERR("startCamNO > lst.size()");
             return;
         }
 
-        for(int i=0; i < startCamNO; i++){
+        for (int i = 0; i < startCamNO; i++) {
             itor++;
         }
 
         for (int i = 0; i < CamCount; i++) {
-            if (itor == lst.end())
-            {
+            if (itor == lst.end()) {
                 ERR("itor == lst.end()");
                 return;
             }
@@ -104,16 +103,13 @@
                 rule.second.strAddr = itor->str_addr;
                 rule.second.weekRuleVec = m_lDBTool->searchCameraWeekRuleByCamId(itor->str_cam_dev_id, rule.first);
 
-                if(rule.second.nSdkType == PerStaticSdk)
-                {
-                    float temp=1-(float)(rule.second.nThreshold)/100;
-                    rule.second.fSensitivity=(75+25*temp)/100;
+                if (rule.second.nSdkType == PerStaticSdk) {
+                    float temp = 1 - (float) (rule.second.nThreshold) / 100;
+                    rule.second.fSensitivity = (75 + 25 * temp) / 100;
 
-                }
-                else if(rule.second.nSdkType != FaceSdk)
-                {
-                    float temp=1-(float)(rule.second.nThreshold)/100;
-                    rule.second.fSensitivity=(5+90*temp)/100;
+                } else if (rule.second.nSdkType != FaceSdk) {
+                    float temp = 1 - (float) (rule.second.nThreshold) / 100;
+                    rule.second.fSensitivity = (5 + 90 * temp) / 100;
                 }
 //                if (rule.second.nThreshold < 5 )
 //                {
@@ -140,7 +136,6 @@
             addCamera(t_camIdex, ruleMap);
             itor++;
         }
-
 //        for (auto item : lst) {
 //            std::string t_camIdex = item.str_cam_dev_id.toStdString();
 //            std::string rtsp_url = rtspAddrBuild(item.str_ip.toStdString(), 554, item.str_username.toStdString(),
@@ -190,6 +185,49 @@
         ERR("searchCamDevTableAll size is 0");
     }
 
+#else
+    auto lst = m_lDBTool->searchCamDevTableByType(1);
+
+    appPref.setIntData("n_cut_max_duration", lst_dev.n_cut_max_duration);
+    appPref.setIntData("n_cut_min_duration", lst_dev.n_cut_min_duration);
+    if (lst.size() > 0) {
+//        Json::Value json;
+
+        for (auto &item : lst) {
+            std::string t_camIdex = item.str_cam_dev_id.toStdString();
+            std::string rtsp_url = "GB28181";
+//            rtspAddrBuild(item.str_ip.toStdString(), 554, item.str_username.toStdString(),
+//                                                 item.str_password.toStdString(), item.str_brand.toStdString());
+            SdkRuleMap ruleMap = m_lDBTool->searchSdkRuleByCamId(item.str_cam_dev_id);
+            for (auto &rule:ruleMap) {
+
+                rule.second.strAddr = item.str_addr;
+                rule.second.weekRuleVec = m_lDBTool->searchCameraWeekRuleByCamId(item.str_cam_dev_id, rule.first);
+
+                if (rule.second.nSdkType == PerStaticSdk) {
+                    float temp = 1 - (float) (rule.second.nThreshold) / 100;
+                    rule.second.fSensitivity = (75 + 25 * temp) / 100;
+
+                } else if (rule.second.nSdkType != FaceSdk) {
+                    float temp = 1 - (float) (rule.second.nThreshold) / 100;
+                    rule.second.fSensitivity = (5 + 90 * temp) / 100;
+                }
+                DBG("fSensitivity" << rule.second.fSensitivity);
+            }
+            appPref.setStringData(t_camIdex + "rtsp", rtsp_url);
+            // appPref.setStringData(t_camIdex+"addr", item.str_addr.toStdString());
+//            json["rtsp"] = rtsp_url;
+            // json["addr"] = item.str_addr.toStdString();
+
+            INFO("cam add is " << item.str_addr.toStdString());
+
+            addCamera(t_camIdex, ruleMap);
+        }
+    } else {
+        ERR("searchCamDevTableAll size is 0");
+    }
+
+#endif
 }
 
 RtspAnalysElement::~RtspAnalysElement() {
diff --git a/QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.h b/QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.h
index 21db01e..d943d1c 100644
--- a/QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.h
+++ b/QiaoJiaSystem/VideoAnalysFromHC/RtspAnalysElement.h
@@ -36,11 +36,11 @@
 private:
     void init();
 
-    std::string resetFdfs(std::string ip = "", unsigned int port = 0, std::string content = "");
+//    std::string resetFdfs(std::string ip = "", unsigned int port = 0, std::string content = "");
 
     static std::vector<int> chnString2Vec(std::string str_list);
 
-    void setDataByType(Json::Value& json,const SdkRule& rule);
+//    void setDataByType(Json::Value& json,const SdkRule& rule);
 
 private:
     LDBTool *m_lDBTool;
diff --git a/QiaoJiaSystem/VideoAnalysFromHC/main.cpp b/QiaoJiaSystem/VideoAnalysFromHC/main.cpp
index a82bf09..3a39a22 100644
--- a/QiaoJiaSystem/VideoAnalysFromHC/main.cpp
+++ b/QiaoJiaSystem/VideoAnalysFromHC/main.cpp
@@ -66,9 +66,15 @@
 
 int main(int argc, char **argv) {
     SAVE_APP_ARGS
-    std::cout<<__DATE__<<" "<<__TIME__<<std::endl;
+    std::cout << __DATE__ << " " << __TIME__ << std::endl;
 #ifdef GLOG
-        ENABLEGLOG(GET_STR_CONFIG("logPath").c_str());
+    ENABLEGLOG(GET_STR_CONFIG("logPath").c_str());
+#endif
+
+#ifndef GB28181
+    DBG("no GB28181");
+#else
+    DBG("hava GB28181");
 #endif
 
     appPref.setLongData("gpu.index", 0);
@@ -77,7 +83,7 @@
     //todo
     appPref.setIntData("CamStart", atoi(argv[1]));
     appPref.setIntData("CamStep", atoi(argv[2]));
-    appPref.setIntData("RpcServerPort",atoi(argv[3]));
+    appPref.setIntData("RpcServerPort", atoi(argv[3]));
 
     //#todo get from config File
 //    appPref.setStringData("ipAdd", "192.168.1.185");
@@ -138,7 +144,7 @@
 
     bool loopRet = true;
     while (loopRet) {
-       switch (_dbTool.searchDevTypeFromConfigTable()) {
+        switch (_dbTool.searchDevTypeFromConfigTable()) {
 
             case 0: {
                 DBG("case 0");
diff --git a/QiaoJiaSystem/VideoServer/QiaoJia/DB/DBStruct.h b/QiaoJiaSystem/VideoServer/QiaoJia/DB/DBStruct.h
index 684890d..0ae7935 100644
--- a/QiaoJiaSystem/VideoServer/QiaoJia/DB/DBStruct.h
+++ b/QiaoJiaSystem/VideoServer/QiaoJia/DB/DBStruct.h
@@ -7,10 +7,9 @@
 #include <QDateTime>
 #include <QVector>
 #include <map>
-struct Record_Storage_Dev
-{
-    Record_Storage_Dev()
-    {
+
+struct Record_Storage_Dev {
+    Record_Storage_Dev() {
         n_id = 0;
         str_storage_dev_id = "";
         str_dev_name = "";
@@ -47,10 +46,8 @@
     QString str_reserved;//鎴浘鍦板潃
 };
 
-struct Record_Cam_Dev
-{
-    Record_Cam_Dev()
-    {
+struct Record_Cam_Dev {
+    Record_Cam_Dev() {
         n_id = 0;
         str_name = "";
         str_addr = "";
@@ -63,6 +60,7 @@
         str_password = "";
         str_brand = "";
         str_reserved = "";
+        n_type = -1;
     }
 
     int n_id;//鑷id
@@ -77,13 +75,12 @@
     QString str_password;//鎽勫儚鏈哄瘑鐮�
     QString str_brand;//鎽勫儚鏈哄搧鐗�
     QString str_reserved;//棰勭暀
+    int n_type;//棰勭暀
 };
 
-struct Record_Cam_Chn
-{
+struct Record_Cam_Chn {
 
-    Record_Cam_Chn()
-    {
+    Record_Cam_Chn() {
         n_id = 0;
         str_storage_dev_id = "";
         n_chn = 0;
@@ -121,8 +118,7 @@
     QString str_reserved;//棰勭暀
 };
 
-struct Record_Load_File_info
-{
+struct Record_Load_File_info {
 
 //    Record_Load_File_info()
 //    {
@@ -146,8 +142,7 @@
     QString str_reserved;//棰勭暀
 };
 
-struct Record_Cut_Video_info
-{
+struct Record_Cut_Video_info {
 
 //    Record_Cut_Video_info()
 //    {
@@ -173,8 +168,7 @@
     QString str_reserved;//棰勭暀
 };
 
-struct Record_Sdk_Hdl_info
-{
+struct Record_Sdk_Hdl_info {
 
 //    Record_Sdk_Hdl_info()
 //    {
@@ -196,11 +190,9 @@
     QString str_reserved;//棰勭暀
 };
 
-struct Record_Chn_Sdk
-{
+struct Record_Chn_Sdk {
 
-    Record_Chn_Sdk()
-    {
+    Record_Chn_Sdk() {
         n_id = 0;
         str_storage_dev_id = "";
         n_chn = 0;
@@ -221,11 +213,9 @@
     QString str_reserved;//棰勭暀
 };
 
-struct Record_Cam_Sdk
-{
+struct Record_Cam_Sdk {
 
-    Record_Cam_Sdk()
-    {
+    Record_Cam_Sdk() {
         n_id = 0;
         str_cam_dev_id = "";
         str_sdks = "";
@@ -242,10 +232,8 @@
     QString str_reserved;//棰勭暀
 };
 
-struct Record_Config
-{
-    Record_Config()
-    {
+struct Record_Config {
+    Record_Config() {
         str_alarm_ip = "";
         n_alarm_port = 0;
         str_web_pic_ip = "";
@@ -257,7 +245,7 @@
         n_dev_type = 0;
         str_reserved = "";
         dev_id = "";
-        dev_name= "";
+        dev_name = "";
     }
 
     QString str_alarm_ip;//鎶ヨ鏈嶅姟鍣╥p
@@ -274,16 +262,15 @@
     QString dev_name;
 };
 
-struct LActRuleWeekRecord
-{
-    LActRuleWeekRecord()
-    {
-        m_strCamId="";
-        m_nSdkType=0;
+struct LActRuleWeekRecord {
+    LActRuleWeekRecord() {
+        m_strCamId = "";
+        m_nSdkType = 0;
         m_nType = 0;
         m_strBegin = "";
         m_strEnd = "";
     }
+
     QString m_strCamId;
     int m_nSdkType;
     int m_nType; //鍛ㄥ嚑
@@ -292,27 +279,26 @@
 };
 
 
-struct SdkRule
-{
-    SdkRule()
-    {
-        nIsRun=0;
-        nSdkType = 0 ;
+struct SdkRule {
+    SdkRule() {
+        nIsRun = 0;
+        nSdkType = 0;
         strCamId = "";
         strAreas = "";
         strLine = "";
         strImageUrl = "";
         nTriggerTolerance = 0;
-        nTriggerDelay=0;
-        nQuality=0;
-        nThreshold=0;
+        nTriggerDelay = 0;
+        nQuality = 0;
+        nThreshold = 0;
         nAlarmNumUpperLimit = 0;
         nAlarmNumLowerLimit = 0;
-        fSensitivity=0;
-        strExAreas="";
-        strLine="";
-        strAddr="";
+        fSensitivity = 0;
+        strExAreas = "";
+        strLine = "";
+        strAddr = "";
     }
+
     int nSdkType;
     QString strCamId;
     QString strAreas; //鐩戞祴鍖哄煙
@@ -333,10 +319,10 @@
 
     std::vector<LActRuleWeekRecord> weekRuleVec;
 };
-typedef std::map<int,SdkRule> SdkRuleMap;
-enum SdkType
-{
-    SdkTypeStart=0,
+
+typedef std::map<int, SdkRule> SdkRuleMap;
+enum SdkType {
+    SdkTypeStart = 0,
     FaceSdk,
     CarSdk,
     YoloSdk,   //浜轰綋
diff --git a/QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.cpp b/QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.cpp
index 42f22eb..8070b13 100644
--- a/QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.cpp
+++ b/QiaoJiaSystem/VideoServer/QiaoJia/DB/LDBTool.cpp
@@ -406,7 +406,7 @@
         ERR("deleteLDeviceTable err ,Database Error: " \
  << pModel_cam.lastError().text().toStdString() \
  << pModel_sdk.lastError().text().toStdString() \
- << pModel_week.lastError().text().toStdString() );
+ << pModel_week.lastError().text().toStdString());
         //        QMessageBox::warning(NULL,QObject::tr("deleteLDeviceTable"),QObject::tr("Database Error: %1").arg(pModel.lastError().text()));
         return false;
     }
@@ -453,8 +453,8 @@
         return false;
     }
 }
-bool LDBTool::updateCamDevSnapshot(const QString& strIp,const QString& imgUrl)
-{
+
+bool LDBTool::updateCamDevSnapshot(const QString &strIp, const QString &imgUrl) {
     QMutexLocker mutexLocker(&m_mutexVisit);//TODO
     QSqlTableModel pModel(NULL, m_db);
     pModel.setTable("cam_dev");
@@ -467,25 +467,22 @@
     rec.setValue("reserved", imgUrl);
 
     int rowCount = pModel.rowCount();
-    if (rowCount > 0)
-    {
+    if (rowCount > 0) {
         pModel.setRecord(0, rec);//TODO
     }
 
     m_db.transaction();//寮�濮嬩簨鍔℃搷浣�
 
-    if (pModel.submitAll())
-    {
+    if (pModel.submitAll()) {
         m_db.commit();//鎻愪氦
         return true;
-    }
-    else
-    {
+    } else {
         m_db.rollback();//鍥炴粴
         ERR("updateCamDevSnapshot err ,Database Error: " << pModel.lastError().text().toStdString());
         return false;
     }
 }
+
 int LDBTool::searchCamDevNumber(void) {
     QSqlTableModel pModel(NULL, m_db);
     pModel.setTable("cam_dev");
@@ -530,8 +527,8 @@
 
     return lst;
 }
-bool LDBTool::searchCamDevByCamId(QString strCamId)
-{
+
+bool LDBTool::searchCamDevByCamId(QString strCamId) {
     QMutexLocker mutexLocker(&m_mutexVisit);//TODO
     std::list<Record_Cam_Dev> lst;
     QSqlTableModel pModel(NULL, m_db);
@@ -2435,7 +2432,7 @@
 
 
 //config 淇敼瑁佸壀瑙嗛鏃堕暱
-bool LDBTool::updateConfigTableByCutDuration(int n_cut_max_duration,int n_cut_min_duration) {
+bool LDBTool::updateConfigTableByCutDuration(int n_cut_max_duration, int n_cut_min_duration) {
     QMutexLocker mutexLocker(&m_mutexVisit);//TODO
     QSqlTableModel pModel(NULL, m_db);
     pModel.setTable("config");
@@ -2492,17 +2489,14 @@
         lRec.dev_name = rec.value("dev_name").toString();
     }
     lRec.dev_id = QString::fromStdString(appConfig.getStringProperty("DEV_ID"));
-    if(lRec.n_cut_max_duration == 0)
-    {
+    if (lRec.n_cut_max_duration == 0) {
         lRec.n_cut_max_duration = 20;
     }
-    if(lRec.n_cut_min_duration == 0)
-    {
+    if (lRec.n_cut_min_duration == 0) {
         lRec.n_cut_min_duration = 4;
     }
     return lRec;
 }
-
 
 
 bool LDBTool::insertRecordVedioPath(QString pathKey, QString filePath) {
@@ -2580,76 +2574,68 @@
 }
 
 
+bool LDBTool::updateCameraWeekRule(const LActRuleWeekRecord &weekRule) {
+    QMutexLocker mutexLocker(&m_mutexVisit);//TODO
+    QSqlTableModel pModel(NULL, m_db);
+    pModel.setTable("rule_week");
+    pModel.setFilter(QObject::tr("camera_id = '%1' and type='%2' and sdk_type='%3'").arg(weekRule.m_strCamId).arg(
+        weekRule.m_nType).arg(weekRule.m_nSdkType));
+    pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange
+    pModel.select();
+    QSqlRecord rec = pModel.record(0);
+    //rec.setGenerated("id", false);
+    rec.setValue("camera_id", weekRule.m_strCamId);
+    rec.setValue("sdk_type", weekRule.m_nSdkType);
+    rec.setValue("type", weekRule.m_nType);
+    rec.setValue("begin_time", weekRule.m_strBegin);
+    rec.setValue("end_time", weekRule.m_strEnd);
+
+    int rowCount = pModel.rowCount();
+    if (rowCount == 0) {
+        pModel.insertRecord(-1, rec);
+    } else if (rowCount > 0) {
+        pModel.setRecord(0, rec);//TODO
+    }
+
+    m_db.transaction();//寮�濮嬩簨鍔℃搷浣�
+
+    if (pModel.submitAll()) {
+        m_db.commit();//鎻愪氦
+        return true;
+    } else {
+        m_db.rollback();//鍥炴粴
+        ERR("updateCameraWeekRule ,pModel_load Error: " << pModel.lastError().text().toStdString());
+
+        return false;
+    }
+}
+
+std::vector<LActRuleWeekRecord> LDBTool::searchCameraWeekRuleByCamId(const QString &camId, const int &sdkType) {
+    std::vector<LActRuleWeekRecord> vecWeek;
+    QMutexLocker mutexLocker(&m_mutexVisit);//TODO
+    QSqlTableModel pModel(NULL, m_db);
+    pModel.setTable("rule_week");
+    pModel.setFilter(QObject::tr("camera_id = '%1' and sdk_type='%2'").arg(camId).arg(sdkType));
+    pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange
+    pModel.select();
+
+    int rowCount = pModel.rowCount();
+    for (int i = 0; i < rowCount; ++i) {
+        LActRuleWeekRecord lActRuleWeekRec;
+        QSqlRecord rec = pModel.record(i);
+        lActRuleWeekRec.m_nSdkType = rec.value("sdk_type").toInt();
+        lActRuleWeekRec.m_nType = rec.value("type").toInt();
+        lActRuleWeekRec.m_strBegin = rec.value("begin_time").toString();
+        lActRuleWeekRec.m_strEnd = rec.value("end_time").toString();
+        lActRuleWeekRec.m_strCamId = rec.value("camera_id").toString();
+        vecWeek.push_back(lActRuleWeekRec);
+    }
+
+    return vecWeek;
+}
 
 
- bool LDBTool::updateCameraWeekRule(const LActRuleWeekRecord& weekRule)
- {
-     QMutexLocker mutexLocker(&m_mutexVisit);//TODO
-     QSqlTableModel pModel(NULL, m_db);
-     pModel.setTable("rule_week");
-     pModel.setFilter(QObject::tr("camera_id = '%1' and type='%2' and sdk_type='%3'").arg(weekRule.m_strCamId).arg(weekRule.m_nType).arg(weekRule.m_nSdkType));
-     pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange
-     pModel.select();
-     QSqlRecord rec = pModel.record(0);
-     //rec.setGenerated("id", false);
-     rec.setValue("camera_id",weekRule.m_strCamId);
-     rec.setValue("sdk_type",weekRule.m_nSdkType);
-     rec.setValue("type", weekRule.m_nType);
-     rec.setValue("begin_time", weekRule.m_strBegin);
-     rec.setValue("end_time",weekRule.m_strEnd);
-
-     int rowCount = pModel.rowCount();
-     if (rowCount == 0)
-     {
-         pModel.insertRecord(-1, rec);
-     }
-     else if (rowCount > 0)
-     {
-         pModel.setRecord(0, rec);//TODO
-     }
-
-     m_db.transaction();//寮�濮嬩簨鍔℃搷浣�
-
-     if (pModel.submitAll()) {
-         m_db.commit();//鎻愪氦
-         return true;
-     } else {
-         m_db.rollback();//鍥炴粴
-         ERR("updateCameraWeekRule ,pModel_load Error: " << pModel.lastError().text().toStdString());
-
-         return false;
-     }
- }
- std::vector<LActRuleWeekRecord> LDBTool::searchCameraWeekRuleByCamId(const QString& camId,const int& sdkType)
- {
-     std::vector<LActRuleWeekRecord> vecWeek;
-     QMutexLocker mutexLocker(&m_mutexVisit);//TODO
-     QSqlTableModel pModel(NULL, m_db);
-     pModel.setTable("rule_week");
-     pModel.setFilter(QObject::tr("camera_id = '%1' and sdk_type='%2'").arg(camId).arg(sdkType));
-     pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange
-     pModel.select();
-
-     int rowCount = pModel.rowCount();
-     for(int i = 0;i < rowCount;++i)
-     {
-         LActRuleWeekRecord lActRuleWeekRec;
-         QSqlRecord rec = pModel.record(i);
-         lActRuleWeekRec.m_nSdkType = rec.value("sdk_type").toInt();
-         lActRuleWeekRec.m_nType = rec.value("type").toInt();
-         lActRuleWeekRec.m_strBegin = rec.value("begin_time").toString();
-         lActRuleWeekRec.m_strEnd = rec.value("end_time").toString();
-         lActRuleWeekRec.m_strCamId=rec.value("camera_id").toString();
-         vecWeek.push_back(lActRuleWeekRec);
-     }
-
-     return vecWeek;
- }
-
-
-
-bool LDBTool::updateSdkRule(const SdkRule& sdkRule)
-{
+bool LDBTool::updateSdkRule(const SdkRule &sdkRule) {
     QMutexLocker mutexLocker(&m_mutexVisit);//TODO
     QSqlTableModel pModel(NULL, m_db);
     pModel.setTable("sdk_rule");
@@ -2660,73 +2646,66 @@
     rec.setValue("cam_id", sdkRule.strCamId);
     rec.setValue("sdk_type", sdkRule.nSdkType);
     rec.setValue("area", sdkRule.strAreas);
-    rec.setValue("ex_area",sdkRule.strExAreas);
-    rec.setValue("line",sdkRule.strLine);
-    rec.setValue("ex_line",sdkRule.strExLine);
-    rec.setValue("alarm_delay",sdkRule.nTriggerDelay);
-    rec.setValue("tolerance",sdkRule.nTriggerTolerance);
-    rec.setValue("alarm_num_upper",sdkRule.nAlarmNumUpperLimit);
-    rec.setValue("alarm_num_lower",sdkRule.nAlarmNumLowerLimit);
-    rec.setValue("broadcast_area",sdkRule.strBroadcast);
-    rec.setValue("is_run",sdkRule.nIsRun);
-    rec.setValue("img_threshold",sdkRule.nThreshold);
-    rec.setValue("img_quality",sdkRule.nQuality);
+    rec.setValue("ex_area", sdkRule.strExAreas);
+    rec.setValue("line", sdkRule.strLine);
+    rec.setValue("ex_line", sdkRule.strExLine);
+    rec.setValue("alarm_delay", sdkRule.nTriggerDelay);
+    rec.setValue("tolerance", sdkRule.nTriggerTolerance);
+    rec.setValue("alarm_num_upper", sdkRule.nAlarmNumUpperLimit);
+    rec.setValue("alarm_num_lower", sdkRule.nAlarmNumLowerLimit);
+    rec.setValue("broadcast_area", sdkRule.strBroadcast);
+    rec.setValue("is_run", sdkRule.nIsRun);
+    rec.setValue("img_threshold", sdkRule.nThreshold);
+    rec.setValue("img_quality", sdkRule.nQuality);
 
     int rowCount = pModel.rowCount();
-    if (rowCount == 0)
-    {
+    if (rowCount == 0) {
         pModel.insertRecord(-1, rec);
-    }
-    else if (rowCount > 0)
-    {
+    } else if (rowCount > 0) {
         pModel.setRecord(0, rec);//TODO
     }
 
     m_db.transaction();//寮�濮嬩簨鍔℃搷浣�
 
-    if (pModel.submitAll())
-    {
+    if (pModel.submitAll()) {
         m_db.commit();//鎻愪氦
         return true;
-    }
-    else
-    {
+    } else {
         m_db.rollback();//鍥炴粴
         ERR("updateSdkRule ,pModel_load Error: " << pModel.lastError().text().toStdString());
         return false;
     }
 }
-SdkRuleMap LDBTool::searchSdkRuleByCamId(const QString& camId)
-{
+
+SdkRuleMap LDBTool::searchSdkRuleByCamId(const QString &camId) {
     QMutexLocker mutexLocker(&m_mutexVisit);//TODO
     QSqlTableModel pModel(NULL, m_db);
     pModel.setTable("sdk_rule");
     pModel.setFilter(QObject::tr("cam_id = '%1' ").arg(camId));
     pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange
     pModel.select();
-    std::map<int,SdkRule> ruleMap;
+    std::map<int, SdkRule> ruleMap;
 
     //std::vector<SdkRule> ruleVec;
     int rowCount = pModel.rowCount();
-    for(int i=0;i<rowCount;++i)
-    {
+    for (int i = 0; i < rowCount; ++i) {
         SdkRule rule;
         QSqlRecord rec = pModel.record(i);
-        rule.strCamId=rec.value("cam_id").toString();
-        rule.strAreas=rec.value("area").toString();
-        rule.strExAreas=rec.value("ex_area").toString();
-        rule.strLine=rec.value("line").toString();
-        rule.strExLine=rec.value("ex_line").toString();
-        rule.nTriggerDelay=rec.value("alarm_delay").toInt();
-        rule.nTriggerTolerance=rec.value("tolerance").toInt();
-        rule.nQuality=rec.value("img_quality").toInt();
-        rule.nThreshold=rec.value("img_threshold").toInt();
-        rule.nAlarmNumUpperLimit=rec.value("alarm_num_upper").toInt();
-        rule.nAlarmNumLowerLimit=rec.value("alarm_num_lower").toInt();
-        rule.strBroadcast=rec.value("broadcast_area").toString();
-        rule.nIsRun=rec.value("is_run").toInt();
-        rule.nSdkType=rec.value("sdk_type").toInt();
-        ruleMap[rule.nSdkType]=rule;
+        rule.strCamId = rec.value("cam_id").toString();
+        rule.strAreas = rec.value("area").toString();
+        rule.strExAreas = rec.value("ex_area").toString();
+        rule.strLine = rec.value("line").toString();
+        rule.strExLine = rec.value("ex_line").toString();
+        rule.nTriggerDelay = rec.value("alarm_delay").toInt();
+        rule.nTriggerTolerance = rec.value("tolerance").toInt();
+        rule.nQuality = rec.value("img_quality").toInt();
+        rule.nThreshold = rec.value("img_threshold").toInt();
+        rule.nAlarmNumUpperLimit = rec.value("alarm_num_upper").toInt();
+        rule.nAlarmNumLowerLimit = rec.value("alarm_num_lower").toInt();
+        rule.strBroadcast = rec.value("broadcast_area").toString();
+        rule.nIsRun = rec.value("is_run").toInt();
+        rule.nSdkType = rec.value("sdk_type").toInt();
+        ruleMap[rule.nSdkType] = rule;
         //ruleVec.push_back(rule);
     }
 
@@ -2742,7 +2721,8 @@
     std::list<Record_Cam_Dev> lst;
     QSqlTableModel pModel(NULL, m_db);
     pModel.setTable("cam_dev");
-    pModel.setFilter(QObject::tr((string("cam_dev_id != '' and cam_dev_id is not null and type='")+to_string(type)+"'").c_str()));
+    pModel.setFilter(QObject::tr(
+        (string("cam_dev_id != '' and cam_dev_id is not null and type='") + to_string(type) + "'").c_str()));
     pModel.setEditStrategy(QSqlTableModel::OnManualSubmit);//OnManualSubmit OnFieldChange
     pModel.select();
 
@@ -2763,6 +2743,7 @@
             lChannelRec.str_password = rec.value("password").toString();
             lChannelRec.str_brand = rec.value("brand").toString();
             lChannelRec.str_reserved = rec.value("reserved").toString();
+            lChannelRec.n_type = rec.value("type").toInt();
             lst.push_back(lChannelRec);
         }
     }
diff --git a/QiaoJiaSystem/VideoToImageMulth/CMakeLists.txt b/QiaoJiaSystem/VideoToImageMulth/CMakeLists.txt
index 8f0f5c9..8b92de1 100644
--- a/QiaoJiaSystem/VideoToImageMulth/CMakeLists.txt
+++ b/QiaoJiaSystem/VideoToImageMulth/CMakeLists.txt
@@ -13,7 +13,7 @@
     Ice
 
     crypto
-
+    mysqlpp
 
     #ffmpeg
     avformat
@@ -74,6 +74,9 @@
     ../../BasicPlatForm/libs/hiredis-master/include
     ../../../BasicPlatForm/basic/timer_counter/
     ../../../BasicPlatForm/libs/GB28181/include
+
+    ../../../BasicPlatForm/libs/mysqlpp/include
+    ../../../BasicPlatForm/libs/mysql/include/mysql/
 )
 
 link_directories(
@@ -89,6 +92,7 @@
     ../../../BasicPlatForm/libs/Ice-3.7.0/lib64
 
     ../../../BasicPlatForm/libs/hiredis-master/lib
+    ../../../BasicPlatForm/libs/mysqlpp/lib
 )
 
 add_executable(${PROJECT_NAME}
diff --git a/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp b/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp
index a5ea3b0..60dc82e 100644
--- a/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp
+++ b/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.cpp
@@ -40,6 +40,8 @@
 //鍒濆鍖栧嚱鏁�
 void RtspAnalysManager::init() {
     INFO("MYH DEBUG HERE")
+    //#todo GB28181
+#ifndef GB28181
     auto lst = m_lDBTool->searchCamDevTableAll();
     Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo();
 
@@ -93,7 +95,62 @@
     } else {
         ERR("searchCamDevTableAll size is 0");
     }
+#else
+    auto lst = m_lDBTool->searchCamDevTableByType(1);
+    Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo();
 
+    //璁剧疆瑙嗛鐨勬渶闀垮拰鏈�鐭椂闂撮棿闅�
+    appPref.setIntData("n_cut_max_duration", lst_dev.n_cut_max_duration);
+    appPref.setIntData("n_cut_min_duration", lst_dev.n_cut_min_duration);
+    if (lst.size() > 0) {
+//        int startCamNO = appPref.getIntData("CamStart") * appPref.getIntData("CamStep");
+//        int CamCount = appPref.getIntData("CamStep");
+//        INFO("StartCamNO: " << startCamNO << " CamStep: " << CamCount);
+//        auto itor = lst.begin();
+//
+//        if (startCamNO >= lst.size()) {
+//            ERR("startCamNO > lst.size()");
+//            return;
+//        }
+//        for (int i = 0; i < startCamNO; i++) {
+//
+//            std::string t_camIdex = itor->str_cam_dev_id.toStdString();
+//            std::string rtsp_url = rtspAddrBuild(itor->str_ip.toStdString(), 554, itor->str_username.toStdString(),
+//                                                 itor->str_password.toStdString(), itor->str_brand.toStdString());
+//            INFO("JumpCam: " << t_camIdex << "  URL: " << rtsp_url);
+//            itor++;
+//        }
+//
+//        for (int i = 0; i < CamCount; i++) {
+//            if (itor == lst.end()) {
+//                ERR("itor == lst.end()");
+//                return;
+//            }
+//            std::string t_camIdex = itor->str_cam_dev_id.toStdString();
+//            std::string rtsp_url = rtspAddrBuild(itor->str_ip.toStdString(), 554, itor->str_username.toStdString(),
+//                                                 itor->str_password.toStdString(), itor->str_brand.toStdString());
+//            INFO("cam add is " << itor->str_addr.toStdString());
+//
+//            addCamera(t_camIdex, rtsp_url);
+//            itor++;
+//        }
+
+        for (auto item : lst) {
+            std::string t_camIdex = item.str_cam_dev_id.toStdString();
+            std::string rtsp_url = "GB28181";
+//            rtspAddrBuild(item.str_ip.toStdString(), 554, item.str_username.toStdString(),
+//                                                 item.str_password.toStdString(), item.str_brand.toStdString());
+            INFO("cam add is " << item.str_addr.toStdString());
+
+            addCamera(t_camIdex, rtsp_url);
+
+        }
+    } else {
+        ERR("searchCamDevTableAll size is 0");
+    }
+
+
+#endif
 }
 
 RtspAnalysManager::~RtspAnalysManager() {
@@ -115,33 +172,35 @@
  */
 int RtspAnalysManager::addCamera(const std::string &index, const std::string &rtsp) {
 #ifndef GB28181
-    auto lst = m_lDBTool->searchCamDevTableAll();
-    Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo();
-    if (m_controllers.find(index) == m_controllers.end()) {
-        INFO("MYH DEBUG HERE");
-        if (m_currentCount >= m_maxCount) {
-            ERR("addCamera faild, camera's num is full!")
-            return -1;
+    //    why search lst ?
+    //    auto lst = m_lDBTool->searchCamDevTableAll();
+        Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo();
+        if (m_controllers.find(index) == m_controllers.end()) {
+            INFO("MYH DEBUG HERE");
+            if (m_currentCount >= m_maxCount) {
+                ERR("addCamera faild, camera's num is full!")
+                return -1;
+            }
+            INFO("RTSP: " << rtsp << "  INDEX:" << index);
+            m_imgRedisControllers[index] = new RtspImageRedisElement(index);
+            m_imgRedisControllers[index]->start();
+
+            m_controllers[index] = new RtspCaptureElement(rtsp, index, 25, 3000, 0, this);
+            m_controllers[index]->SetVideoMinMaxSeconds(lst_dev.n_cut_min_duration, lst_dev.n_cut_max_duration);
+            m_controllers[index]->start();
+            m_currentCount++;
+            return 0;
+
+        } else {
+            removeCamera(index);
+            INFO("removeCamera " << index);
+            //DBG("removeCamera " << index);
+            return addCamera(index, rtsp);
         }
-        INFO("RTSP: " << rtsp << "  INDEX:" << index);
-        m_imgRedisControllers[index] = new RtspImageRedisElement(index);
-        m_imgRedisControllers[index]->start();
-
-        m_controllers[index] = new RtspCaptureElement(rtsp, index, 25, 3000, 0, this);
-        m_controllers[index]->start();
-        m_controllers[index]->SetVideoMinMaxSeconds(lst_dev.n_cut_min_duration, lst_dev.n_cut_max_duration);
-        m_currentCount++;
-        return 0;
-
-    } else {
-        removeCamera(index);
-        INFO("removeCamera " << index);
-        //DBG("removeCamera " << index);
-        return addCamera(index, rtsp);
-    }
 #else
     //#todo
-    auto lst = m_lDBTool->searchCamDevTableAll();
+//    why search lst ?
+//    auto lst = m_lDBTool->searchCamDevTableAll();
     Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo();
 
     //#todo end
@@ -158,9 +217,9 @@
         //VideoCaptureElementWithRtp(std::string &chanPubID, int fps, int streamTransType, int gpuIdx = -1)
         m_controllers_videoCapElem[index] = new BASICGB28181::VideoCaptureElementWithRtp(const_cast<string &>(index),
                                                                                          25, 1, 0);
-        m_controllers_videoCapElem[index]->start();
         m_controllers_videoCapElem[index]->SetVideoMinMaxSeconds(lst_dev.n_cut_min_duration,
                                                                  lst_dev.n_cut_max_duration);
+        m_controllers_videoCapElem[index]->start();
         m_currentCount++;
         return 0;
 
diff --git a/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.h b/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.h
index 2612548..8f15623 100644
--- a/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.h
+++ b/QiaoJiaSystem/VideoToImageMulth/RtspAnalysManager.h
@@ -9,7 +9,8 @@
 #include <map>
 #include "RtspCaptureElement.h"
 #include "RtspImageRedis.h"
-#include <VideoCaptureElementWithRtp.h>
+#include "../GB28181DecoderModel/VideoCaptureElementWithRtp.h"
+//#include <VideoCaptureElementWithRtp.h>
 #include <QiaoJia/DB/LDBTool.h>
 #include <basic/util/app/AppPreference.hpp>
 #include "RtspAnalysServer.h"
diff --git a/QiaoJiaSystem/VideoToImageMulth/main.cpp b/QiaoJiaSystem/VideoToImageMulth/main.cpp
index f0e6bcb..0a29848 100644
--- a/QiaoJiaSystem/VideoToImageMulth/main.cpp
+++ b/QiaoJiaSystem/VideoToImageMulth/main.cpp
@@ -17,6 +17,7 @@
 
 #include <GB28181Server.h>
 #include <basic/util/net_config/net_config.h>
+#include <DataManagerServer/vss/dao/VssLocalSettingTblSqliteDao.h>
 
 static void startManager(LDBTool *_dbTool) {
     RtspAnalysManager rtspAnalysManager(_dbTool);
@@ -71,15 +72,28 @@
     mysqlDBServerCfg.DBName = "EGEyesForVSS";
     mysqlDBServerCfg.DBConnCount = 5;
 
+    LDBTool ldbTool;
+    BaseSqliteDao::setLDBTool(&ldbTool);
 
     //#todo search from db
+    Json::Value t_value;
+    {
+        LDBTool ldbTool;
+        BaseSqliteDao::setLDBTool(&ldbTool);
+        t_value = VssLocalSettingTblSqliteDao::instance()->findAllVssLocalSettingTblList();
+    }
+    if (t_value.size() == 1 && t_value["data"].size() > 1) {
+        assert("t_value.size()");
+    }
+    DBG(t_value["data"].begin()->toStyledString());
+    auto &t_cfg = *t_value["data"].begin();
     GBServerCfg gbServerCfg;
-    gbServerCfg.SvrIp = getLocalIp(); // 鍥芥爣鏈嶅姟鐨刬p鍦板潃  (鏈満鐨刬p鍦板潃)
-    gbServerCfg.SvrPort = 7060; // 鍥芥爣鏈嶅姟鐩戝惉鐨勭鍙�
-    gbServerCfg.SvrPubID = "44120000002000000001"; // 鍥芥爣鏈嶅姟鍣ㄧ殑ID
+    gbServerCfg.SvrIp = t_cfg["ServerIp"].asString(); // 鍥芥爣鏈嶅姟鐨刬p鍦板潃  (鏈満鐨刬p鍦板潃)
+    gbServerCfg.SvrPort = atoi(t_cfg["ServerPort"].asString().c_str());// 7060; // 鍥芥爣鏈嶅姟鐩戝惉鐨勭鍙�
+    gbServerCfg.SvrPubID = t_cfg["ServerId"].asString();// "44120000002000000001"; // 鍥芥爣鏈嶅姟鍣ㄧ殑ID
     gbServerCfg.bMD5Auth = false; // 鏄惁闇�瑕丮D5鍔犲瘑
-    gbServerCfg.UserName = "44120100002000000002"; // 鍥芥爣鏈嶅姟鐨勭敤鎴峰悕	(涓嬬骇璁惧娉ㄥ唽鐨勭敤鎴峰悕)
-    gbServerCfg.Passwd = "123456"; // 鍥芥爣鏈嶅姟鐨勫瘑鐮�	(涓嬬骇璁惧娉ㄥ唽鐨勫瘑鐮�)
+    gbServerCfg.UserName = t_cfg["UserAuthId"].asString();// "44120100002000000002"; // 鍥芥爣鏈嶅姟鐨勭敤鎴峰悕	(涓嬬骇璁惧娉ㄥ唽鐨勭敤鎴峰悕)
+    gbServerCfg.Passwd = t_cfg["Password"].asString();// "123456"; // 鍥芥爣鏈嶅姟鐨勫瘑鐮�	(涓嬬骇璁惧娉ㄥ唽鐨勫瘑鐮�)
     gbServerCfg.SubScribeTime = 3600; // 璁㈤槄鏃堕棿  濡傛灉涓�0 琛ㄧず涓嶈闃�
 
     SpinLock spinLock;

--
Gitblit v1.8.0