|
|
@@ -4674,6 +4674,7 @@ int DealResistMove(const httplib::Request& req, const string token, char** json,
|
|
|
|
|
|
list<CONVERT_RESIST> maxResist; //转换力数据
|
|
|
list<PASS_RESIST> lstPass; //过车数据
|
|
|
+ list<FRICTION_RESIST> lstFriction; //摩擦力数据
|
|
|
std::map<time_t, int64_t> maxlock0, maxlock1;//锁闭力 前面时间戳, 后面 高4位显示值, 低4位报警值
|
|
|
std::map<time_t, int64_t> retentionforce0, retentionforce1; //保持力 时间戳, 高4位显示值, 低4位报警值
|
|
|
std::map<time_t, tagSecondStatInfo> mapSecondStatInfo0, mapSecondStatInfo1, mapSecondStatInfo2;
|
|
|
@@ -4692,6 +4693,40 @@ int DealResistMove(const httplib::Request& req, const string token, char** json,
|
|
|
++it;
|
|
|
}
|
|
|
}
|
|
|
+ //摩擦力过滤
|
|
|
+ for (auto it = maxResist.begin(); it != maxResist.end();)
|
|
|
+ {
|
|
|
+ int first_value = 0, last_value = 0;
|
|
|
+ auto ii = mapSecondStatInfo2.find(it->tmStart);
|
|
|
+ ASSERT(ii != mapSecondStatInfo2.end());
|
|
|
+ first_value = ii->second.first_val;
|
|
|
+ ii = mapSecondStatInfo2.find(it->tmEnd);
|
|
|
+ if (ii == mapSecondStatInfo2.end())
|
|
|
+ ii = mapSecondStatInfo2.find(it->tmEnd - 1);
|
|
|
+ ASSERT(ii != mapSecondStatInfo2.end());
|
|
|
+ last_value = ii->second.end_val;
|
|
|
+ auto dif = abs(last_value - first_value);
|
|
|
+ if (dif > 1000)
|
|
|
+ {
|
|
|
+ auto strLog = fmt::format("{} first:{} last:{} dif:{}",
|
|
|
+ CTime(it->time/1000).Format("%Y-%m-%d %H:%M:%S"), first_value, last_value, dif);
|
|
|
+ SPDLOG_INFO(strLog);
|
|
|
+ FRICTION_RESIST info;
|
|
|
+ info.peak_time = it->time;
|
|
|
+ info.peak_val = it->val;
|
|
|
+ info.show_time = it->time; //暂时赋值峰值
|
|
|
+ info.show_val = last_value;
|
|
|
+ info.tmStart = it->tmStart;
|
|
|
+ info.tmEnd = it->tmEnd;
|
|
|
+ info.t = strLog;
|
|
|
+ lstFriction.emplace_back(info);
|
|
|
+ it = maxResist.erase(it);
|
|
|
+ ++it;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ ++it;
|
|
|
+ }
|
|
|
+
|
|
|
if (maxResist.size())
|
|
|
{
|
|
|
mg_per_session_data::GetMaxLockNew(data0, maxResist, maxlock0, retentionforce0);
|
|
|
@@ -4810,6 +4845,22 @@ int DealResistMove(const httplib::Request& req, const string token, char** json,
|
|
|
//JudgeAlarm(pService, pInvertSuobiOverInfo, it.first, show_val, eSuoBiPosi::SB_INVERT, mo, mp, zzjno);
|
|
|
}
|
|
|
|
|
|
+ for (auto& it : lstFriction)
|
|
|
+ {
|
|
|
+ time_t show_time = it.peak_time;
|
|
|
+ int curr_val = it.peak_val;
|
|
|
+ int show_val = it.show_val;
|
|
|
+ auto obj = yyjson_mut_obj(doc);
|
|
|
+ yyjson_mut_arr_add_val(convert_points, obj);
|
|
|
+ auto coord = yyjson_mut_arr(doc);
|
|
|
+ yyjson_mut_obj_add_val(doc, obj, "coord", coord);
|
|
|
+ yyjson_mut_arr_add_int(doc, coord, show_time);
|
|
|
+ yyjson_mut_arr_add_int(doc, coord, curr_val);
|
|
|
+ yyjson_mut_obj_add_strcpy(doc, obj, "time", fmt::format("{}.{:0>3}", CTime(show_time / 1000).Format("%Y-%m-%d %H:%M:%S"), show_time % 1000).c_str());
|
|
|
+ yyjson_mut_obj_add_int(doc, obj, "val", show_val);
|
|
|
+ yyjson_mut_obj_add_strcpy(doc, obj, "label", ANSItoUTF8(fmt::format("稳态值:{}", show_val)).c_str());
|
|
|
+ }
|
|
|
+
|
|
|
for (auto& it : maxResist)
|
|
|
{
|
|
|
auto obj = yyjson_mut_obj(doc);
|
|
|
@@ -4847,7 +4898,7 @@ int DealResistMove(const httplib::Request& req, const string token, char** json,
|
|
|
}
|
|
|
if (curr_val < 0)
|
|
|
yyjson_mut_obj_add_str(doc, obj, "position", "bottom");
|
|
|
- yyjson_mut_obj_add_strcpy(doc, obj, "label", ANSItoUTF8(fmt::format("定扳反:{}", ++show_val)).c_str());
|
|
|
+ yyjson_mut_obj_add_strcpy(doc, obj, "label", ANSItoUTF8(fmt::format("定扳反:{}", show_val)).c_str());
|
|
|
|
|
|
//CResistAlarmMng::InsertToDBByMove(mo, mp, it.time, it.tmStart, it.tmEnd, it.val, it.fluctuation_val, i,
|
|
|
// (uint8_t)eDaoChaPosi::DCP_FIX2INVERT, fmt::format("{}:{}", in_name, it.fluctuation_val));
|
|
|
@@ -4885,7 +4936,7 @@ int DealResistMove(const httplib::Request& req, const string token, char** json,
|
|
|
}
|
|
|
if (curr_val < 0)
|
|
|
yyjson_mut_obj_add_str(doc, obj, "position", "bottom");
|
|
|
- yyjson_mut_obj_add_strcpy(doc, obj, "label", ANSItoUTF8(fmt::format("反扳定:{}", ++show_val)).c_str());
|
|
|
+ yyjson_mut_obj_add_strcpy(doc, obj, "label", ANSItoUTF8(fmt::format("反扳定:{}", show_val)).c_str());
|
|
|
|
|
|
//CResistAlarmMng::InsertToDBByMove(mo, mp, it.time, it.tmStart, it.tmEnd, it.val, it.fluctuation_val, i,
|
|
|
// (uint8_t)eDaoChaPosi::DCP_INVERT2FIX, fmt::format("{}:{}", in_name, it.fluctuation_val));
|
|
|
@@ -4926,7 +4977,7 @@ int DealResistMove(const httplib::Request& req, const string token, char** json,
|
|
|
}
|
|
|
if (curr_val < 0)
|
|
|
yyjson_mut_obj_add_str(doc, obj, "position", "bottom");
|
|
|
- yyjson_mut_obj_add_strcpy(doc, obj, "label", ANSItoUTF8(fmt::format("定扳反:{}", ++show_val)).c_str());
|
|
|
+ yyjson_mut_obj_add_strcpy(doc, obj, "label", ANSItoUTF8(fmt::format("定扳反:{}", show_val)).c_str());
|
|
|
|
|
|
//CResistAlarmMng::InsertToDBByMove(mo, mp, it.time, it.tmStart, it.tmEnd, it.val, it.fluctuation_val, i,
|
|
|
// (uint8_t)eDaoChaPosi::DCP_FIX2INVERT, fmt::format("{}:{}", out_name, it.fluctuation_val));
|
|
|
@@ -4964,7 +5015,7 @@ int DealResistMove(const httplib::Request& req, const string token, char** json,
|
|
|
}
|
|
|
if (curr_val < 0)
|
|
|
yyjson_mut_obj_add_str(doc, obj, "position", "bottom");
|
|
|
- yyjson_mut_obj_add_strcpy(doc, obj, "label", ANSItoUTF8(fmt::format("反扳定:{}", ++show_val)).c_str());
|
|
|
+ yyjson_mut_obj_add_strcpy(doc, obj, "label", ANSItoUTF8(fmt::format("反扳定:{}", show_val)).c_str());
|
|
|
|
|
|
//CResistAlarmMng::InsertToDBByMove(mo, mp, it.time, it.tmStart, it.tmEnd, it.val, it.fluctuation_val, i,
|
|
|
// (uint8_t)eDaoChaPosi::DCP_INVERT2FIX, fmt::format("{}:{}", out_name, it.fluctuation_val));
|