|
@@ -156,9 +156,11 @@ namespace MIVA
|
|
|
// 监听推理广播
|
|
|
void UserApp::ListenInfer(int Source_id, int num)
|
|
|
{
|
|
|
+ char ctime[80];
|
|
|
+ getDataTime(ctime);
|
|
|
// 异步更新
|
|
|
- SqlWriter updataSql("UPDATE MIVA_DB.Streams SET num = '?' WHERE Id = '?';");
|
|
|
- updataSql << num << Source_id << endl;
|
|
|
+ SqlWriter updataSql("UPDATE MIVA_DB.Streams SET num = '?' DataTime = '?' WHERE Id = '?';");
|
|
|
+ updataSql << num << ctime << Source_id << endl;
|
|
|
}
|
|
|
|
|
|
// 连接Netty
|
|
@@ -181,7 +183,6 @@ namespace MIVA
|
|
|
}
|
|
|
PIDSClientResultMsg clentResultMsg;
|
|
|
|
|
|
-
|
|
|
for(auto &line : sqlRet){
|
|
|
vector<vector<std::string>> sqlRet0;
|
|
|
SqlWriter sqlSelect0("SELECT Crowdedness,num FROM MIVA_DB.`Crowdedness` where CarId = ?");
|
|
@@ -241,7 +242,7 @@ namespace MIVA
|
|
|
num++;
|
|
|
}else
|
|
|
{
|
|
|
- // 纪律动态载荷
|
|
|
+ // 记录动态载荷
|
|
|
SqlWriter updataSql("UPDATE MIVA_DB.CarId SET DynamicLoad = '?' WHERE CarId = '?';");
|
|
|
for(int id=1; id <= 6 ; id ++){
|
|
|
updataSql << serverResultMag.DynamicLoad[id] << id << sqlRet;
|
|
@@ -250,7 +251,7 @@ namespace MIVA
|
|
|
// 获取到关好门的信号
|
|
|
if((serverResultMag.DoorFlag & 0x80))
|
|
|
{
|
|
|
- // 广播收到管好门的信号
|
|
|
+ // 广播收到关门的信号
|
|
|
NoticeCenter::Instance().emitEvent(NOTICE_CLOSED);
|
|
|
}
|
|
|
}
|
|
@@ -265,4 +266,76 @@ namespace MIVA
|
|
|
bzero(&(servaddr.sin_zero), sizeof servaddr.sin_zero);
|
|
|
}
|
|
|
|
|
|
+ //监听关门信号
|
|
|
+ void UserApp::ListenClosed()
|
|
|
+ {
|
|
|
+ // 收到关门信号
|
|
|
+ // 获取CarId、空载荷值、动态载荷值
|
|
|
+ std::map<int, CarData> carDatas;
|
|
|
+
|
|
|
+ vector<vector<string>> sqlRet;
|
|
|
+ SqlWriter sqlSelect0("SELECT CarId,NoLoad,DynamicLoad FROM MIVA_DB.`CarId`");
|
|
|
+ sqlSelect0 << sqlRet;
|
|
|
+ if(sqlRet.empty()){
|
|
|
+ ErrorL << "Car data not found.";
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ for(auto &line : sqlRet){
|
|
|
+ CarData data;
|
|
|
+ data.loadData.NoLoad = atoi(line[1].c_str());
|
|
|
+ data.loadData.DynamicLoad = atoi(line[2].c_str());
|
|
|
+ carDatas[atoi(line[0].c_str())] = data;
|
|
|
+ }
|
|
|
+ SqlWriter sqlSelect1("SELECT CarId,Stream,Num FROM MIVA_DB.`Streams` WHERE Play = 1");
|
|
|
+ sqlRet.clear();
|
|
|
+ sqlSelect1 << sqlRet;
|
|
|
+ for (auto &line : sqlRet)
|
|
|
+ {
|
|
|
+ CarInferData data;
|
|
|
+ data.uri = line[1];
|
|
|
+ data.num = atoi(line[2].c_str());
|
|
|
+ carDatas[atoi(line[0].c_str())].inferData.push_back(data);
|
|
|
+ }
|
|
|
+ // 提取所需的数据成功
|
|
|
+ // 数据计算
|
|
|
+ sqlRet.clear();
|
|
|
+ std::map<int, CarData>::iterator iter;
|
|
|
+ for(iter=carDatas.begin(); iter!=carDatas.end(); iter++)
|
|
|
+ {
|
|
|
+ SqlWriter sqlUpdata("UPDATA MIVA_DB.Streams SET Crowdedness = '?', num = '?' WHERE CarId = '?'");
|
|
|
+
|
|
|
+ int sum = 0;
|
|
|
+ std::list<CarInferData>::iterator it;
|
|
|
+ for (it = (iter->second.inferData.begin()); it != (iter->second.inferData.end()); it++){
|
|
|
+ sum += it->num;
|
|
|
+ }
|
|
|
+ int result = DataCalculation(iter->second.loadData.NoLoad, iter->second.loadData.DynamicLoad, sum);
|
|
|
+ int grade = GradeDetermination(result);
|
|
|
+
|
|
|
+ // 更新数据
|
|
|
+ sqlUpdata << grade << result << iter->first << sqlRet;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 数据计算
|
|
|
+ uint32_t UserApp::DataCalculation(uint32_t noLoad, uint32_t dynamicLoad, int num)
|
|
|
+ {
|
|
|
+ uint32_t result;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 拥挤度等级判定
|
|
|
+ uint8_t UserApp::GradeDetermination(int num)
|
|
|
+ {
|
|
|
+ // 等级1 - 4
|
|
|
+ uint8_t grade = 1;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return grade;
|
|
|
+ }
|
|
|
+
|
|
|
}
|