#include "StabCalculation/StabCalculation.h" #include #include "XmlSerialization.h" #include "StabCalculation/XmlTableHelper.h" // 静态成员变量初始化 std::set StabCalcBaseData::m_lwtsumID = { "船体钢料汇总", "木作舾装汇总", "机电设备汇总", "固定压载汇总", "其他重量汇总", "空船汇总" }; std::vector StabCalcBaseData::binf_data_grid_view; std::vector StabCalcBaseData::shell_data_grid_view; std::vector StabCalcBaseData::compartment_data_grid_view; std::vector StabCalcBaseData::flood_point_data_grid_view; std::vector StabCalcBaseData::immersion_point_data_grid_view; std::vector StabCalcBaseData::limit_static_point_data_grid_view; std::vector StabCalcBaseData::deckline_data_grid_view; std::vector StabCalcBaseData::lwt_data_grid_view; std::vector StabCalcBaseData::partial_load_data_grid_view; std::vector StabCalcBaseData::partial_load_weight_data_grid_view; std::vector StabCalcBaseData::partial_load_free_surf_data_grid_view; std::vector StabCalcBaseData::partial_load_bulk_data_grid_view; std::vector StabCalcBaseData::partial_load_person_data_grid_view; std::vector StabCalcBaseData::partial_load_ice_data_grid_view; std::vector StabCalcBaseData::wind_fixed_data_grid_view; std::vector StabCalcBaseData::wind_non_fixed_data_grid_view; std::vector StabCalcBaseData::case_data_grid_view; std::vector StabCalcBaseData::allow_nm_data_grid_view; std::vector StabCalcBaseData::dam_case_data_grid_view; std::vector StabCalcBaseData::dam_compartment_data_grid_view; std::vector StabCalcBaseData::dam_case_prob_data_grid_view; std::vector StabCalcBaseData::dam_region_data_grid_view; std::vector StabCalcBaseData::comp_extent_data_grid_view; std::vector StabCalcBaseData::dam_comp_prob_data_grid_view; std::vector StabCalcBaseData::inclining_draft_data_grid_view; std::vector StabCalcBaseData::inclining_status_data_grid_view; std::vector StabCalcBaseData::inclining_extra_weight_data_grid_view; std::vector StabCalcBaseData::inclining_relocate_weight_data_grid_view; std::vector StabCalcBaseData::inclining_absent_weight_data_grid_view; std::vector StabCalcBaseData::inclining_tank_data_grid_view; std::vector StabCalcBaseData::inclining_mobile_weight_data_grid_view; std::vector StabCalcBaseData::inclining_device_data_grid_view; std::vector StabCalcBaseData::inclining_case_data_grid_view; std::vector StabCalcBaseData::inclining_record_data_grid_view; std::vector StabCalcBaseData::xlabel_data_grid_view; std::vector StabCalcBaseData::partial_load_item_data_grid_view; std::vector StabCalcBaseData::Pull_data_grid_view; std::vector StabCalcBaseData::Jet_data_grid_view; std::vector StabCalcBaseData::Lift_data_grid_view; std::vector StabCalcBaseData::Sidesway_data_grid_view; std::vector StabCalcBaseData::Pile_data_grid_view; std::vector StabCalcBaseData::Mud_data_grid_view; std::vector StabCalcBaseData::MudAsym_data_grid_view; std::vector StabCalcBaseData::station_label_data_grid_view; std::vector StabCalcBaseData::waterline_label_data_grid_view; std::vector StabCalcBaseData::buttockline_label_data_grid_view; std::string StabCalcBaseData::FindByParamID(std::string paramid) { auto it = binf_data_grid_view.begin(); for (; it != binf_data_grid_view.end(); ++it) { if (it->paramid == paramid) { return it->value; } } return ""; } Compartment* StabCalcBaseData::compartment_FindByID(std::string id) { auto it = StabCalcBaseData::compartment_data_grid_view.begin(); for (; it != StabCalcBaseData::compartment_data_grid_view.end(); ++it) { if (it->id == id) { return &*it; } } return nullptr; } Case* StabCalcBaseData::Case_FindByID(std::string id) { auto it = StabCalcBaseData::case_data_grid_view.begin(); for (; it != StabCalcBaseData::case_data_grid_view.end(); ++it) { if (it->id == id) { return &*it; } } return nullptr; } IncliningCase* StabCalcBaseData::IncliningCase_FindByID(int id) { auto it = StabCalcBaseData::inclining_case_data_grid_view.begin(); for (; it != StabCalcBaseData::inclining_case_data_grid_view.end(); ++it) { if (it->id == id) { return &*it; } } return nullptr; } PartialLoad* StabCalcBaseData::PartialLoad_FindByID(std::string id) { auto it = StabCalcBaseData::partial_load_data_grid_view.begin(); for (; it != StabCalcBaseData::partial_load_data_grid_view.end(); ++it) { if (it->id == id) { return &*it; } } return nullptr; } WindNonFixed* StabCalcBaseData::WindNonFixed_FindByID(std::string id) { auto it = StabCalcBaseData::wind_non_fixed_data_grid_view.begin(); for (; it != StabCalcBaseData::wind_non_fixed_data_grid_view.end(); ++it) { if (it->id == id) { return &*it; } } return nullptr; } int StabCalcBaseData::fromXml() { auto xmlPtr = XmlSerialization::getXmlSerializationInstance(); // 基本信息 xmlPtr->getBInfTableData(binf_data_grid_view); //船壳 xmlPtr->getShellTableData(shell_data_grid_view); xmlPtr->getXLabelTableData(xlabel_data_grid_view); // 进水点 xmlPtr->getFloodPointTableData(flood_point_data_grid_view); // 权限静倾角(出水入水点) xmlPtr->getLimitStaticPointTableData(limit_static_point_data_grid_view); // 浸没点 xmlPtr->getImmersionPointTableData(immersion_point_data_grid_view); // 舱壁甲板边线 xmlPtr->getDecklineTableData(deckline_data_grid_view); // 舱容 xmlPtr->getCompartmentTableData(compartment_data_grid_view); // 空船重量 xmlPtr->getLwtTableData(lwt_data_grid_view); xmlPtr->getPartialLoadTableData(partial_load_data_grid_view); xmlPtr->getPartialLoadWeightTableData(partial_load_weight_data_grid_view); xmlPtr->getPartialLoadFreeSurfTableData(partial_load_free_surf_data_grid_view); xmlPtr->getPartialLoadBulkTableData(partial_load_bulk_data_grid_view); xmlPtr->getPartialLoadPersonTableData(partial_load_person_data_grid_view); xmlPtr->getPartialLoadIceTableData(partial_load_ice_data_grid_view); xmlPtr->getWindFixedTableData(wind_fixed_data_grid_view); xmlPtr->getWindNonFixedTableData(wind_non_fixed_data_grid_view); xmlPtr->getCaseTableData(case_data_grid_view); xmlPtr->getAllowNMTableData(allow_nm_data_grid_view); xmlPtr->getDamCaseTableData(dam_case_data_grid_view); xmlPtr->getDamCompartmentTableData(dam_compartment_data_grid_view); xmlPtr->getDamCaseProbTableData(dam_case_prob_data_grid_view); xmlPtr->getDamRegionTableData(dam_region_data_grid_view); xmlPtr->getCompExtentTableData(comp_extent_data_grid_view); xmlPtr->getDamCompartmentProbTableData(dam_comp_prob_data_grid_view); xmlPtr->getIncliningDraftTableData(inclining_draft_data_grid_view); xmlPtr->getIncliningStatusTableData(inclining_status_data_grid_view); xmlPtr->getIncliningExtraWeightTableData(inclining_extra_weight_data_grid_view); xmlPtr->getIncliningRelocateWeightTableData(inclining_relocate_weight_data_grid_view); xmlPtr->getIncliningAbsentWeightTableData(inclining_absent_weight_data_grid_view); xmlPtr->getIncliningTankTableData(inclining_tank_data_grid_view); xmlPtr->getIncliningMobileWeightTableData(inclining_mobile_weight_data_grid_view); xmlPtr->getIncliningDeviceTableData(inclining_device_data_grid_view); xmlPtr->getIncliningCaseTableData(inclining_case_data_grid_view); xmlPtr->getIncliningRecordTableData(inclining_record_data_grid_view); xmlPtr->getStationLabelTableData(station_label_data_grid_view); xmlPtr->getWaterlineLabelTableData(waterline_label_data_grid_view); xmlPtr->getButtocklineLabelTableData(buttockline_label_data_grid_view); return 0; } int StabCalcBaseData::toXml() { auto xmlPtr = XmlSerialization::getXmlSerializationInstance(); // 基本信息 xmlPtr->setBInfDataSet(binf_data_grid_view); //船壳 xmlPtr->setShellDataSet(shell_data_grid_view); xmlPtr->setXLabelDataSet(xlabel_data_grid_view); // 进水点 xmlPtr->setFloodPointDataSet(flood_point_data_grid_view); // 权限静倾角(出水入水点) xmlPtr->setLimitStaticPointDataSet(limit_static_point_data_grid_view); // 浸没点 xmlPtr->setImmersionPointDataSet(immersion_point_data_grid_view); // 舱壁甲板边线 xmlPtr->setDecklineDataSet(deckline_data_grid_view); // 舱容 xmlPtr->setCompartmentDataSet(compartment_data_grid_view); // 空船重量 xmlPtr->setLwtDataSet(lwt_data_grid_view); xmlPtr->setPartialLoadDataSet(partial_load_data_grid_view); xmlPtr->setPartialLoadWeightDataSet(partial_load_weight_data_grid_view); xmlPtr->setPartialLoadFreeSurfDataSet(partial_load_free_surf_data_grid_view); xmlPtr->setPartialLoadBulkDataSet(partial_load_bulk_data_grid_view); xmlPtr->setPartialLoadPersonDataSet(partial_load_person_data_grid_view); xmlPtr->setPartialLoadIceDataSet(partial_load_ice_data_grid_view); xmlPtr->setWindFixedDataSet(wind_fixed_data_grid_view); xmlPtr->setWindNonFixedDataSet(wind_non_fixed_data_grid_view); xmlPtr->setCaseDataSet(case_data_grid_view); xmlPtr->setAllowNMDataSet(allow_nm_data_grid_view); xmlPtr->setDamCaseDataSet(dam_case_data_grid_view); xmlPtr->setDamCompartmentDataSet(dam_compartment_data_grid_view); xmlPtr->setDamCaseProbDataSet(dam_case_prob_data_grid_view); xmlPtr->setDamRegionDataSet(dam_region_data_grid_view); xmlPtr->setCompExtentDataSet(comp_extent_data_grid_view); xmlPtr->setDamCompartmentProbDataSet(dam_comp_prob_data_grid_view); xmlPtr->setIncliningDraftDataSet(inclining_draft_data_grid_view); xmlPtr->setIncliningStatusDataSet(inclining_status_data_grid_view); xmlPtr->setIncliningExtraWeightDataSet(inclining_extra_weight_data_grid_view); xmlPtr->setIncliningRelocateWeightDataSet(inclining_relocate_weight_data_grid_view); xmlPtr->setIncliningAbsentWeightDataSet(inclining_absent_weight_data_grid_view); xmlPtr->setIncliningTankDataSet(inclining_tank_data_grid_view); xmlPtr->setIncliningMobileWeightDataSet(inclining_mobile_weight_data_grid_view); xmlPtr->setIncliningDeviceDataSet(inclining_device_data_grid_view); xmlPtr->setIncliningCaseDataSet(inclining_case_data_grid_view); xmlPtr->setIncliningRecordDataSet(inclining_record_data_grid_view); xmlPtr->setStationLabelDataSet(station_label_data_grid_view); xmlPtr->setWaterlineLabelDataSet(waterline_label_data_grid_view); xmlPtr->setButtocklineLabelDataSet(buttockline_label_data_grid_view); return 0; } void StabCalcBaseData::updateData() { for (int i = 0; i < StabCalcBaseData::shell_data_grid_view.size(); i++) { StabCalcBaseData::shell_data_grid_view[i].sid = i + 1; } for (int i = 0; i < StabCalcBaseData::compartment_data_grid_view.size(); i++) { StabCalcBaseData::compartment_data_grid_view[i].sid = i + 1; } for(auto& item : StabCalcBaseData::flood_point_data_grid_view) { item.x = ChangeFSPos::ShowX(item.xsymbol); } for(auto& item : StabCalcBaseData::limit_static_point_data_grid_view) { item.x1 = ChangeFSPos::ShowX(item.xsymbol); item.x2 = item.x1; } for(auto& item : StabCalcBaseData::immersion_point_data_grid_view) { item.x = ChangeFSPos::ShowX(item.xsymbol); } for(auto& item : StabCalcBaseData::deckline_data_grid_view) { item.x = ChangeFSPos::ShowX(item.xsymbol); } for(auto& item : StabCalcBaseData::lwt_data_grid_view) { item.xg = ChangeFSPos::ShowX(item.xg_symbol); item.xa = ChangeFSPos::ShowX(item.xa_symbol); item.xf = ChangeFSPos::ShowX(item.xf_symbol); } for(auto& item : StabCalcBaseData::partial_load_weight_data_grid_view) { item.xg = ChangeFSPos::ShowX(item.xg_symbol); item.xa = ChangeFSPos::ShowX(item.xa_symbol); item.xf = ChangeFSPos::ShowX(item.xf_symbol); } for(auto& item : StabCalcBaseData::partial_load_ice_data_grid_view) //20201214 by czb, 结冰载荷,远洋渔船 { item.xg = ChangeFSPos::ShowX(item.xg_symbol); } for(auto& item : StabCalcBaseData::partial_load_item_data_grid_view) { item.xg = ChangeFSPos::ShowX(item.xg_symbol); item.xa = ChangeFSPos::ShowX(item.xa_symbol); item.xf = ChangeFSPos::ShowX(item.xf_symbol); } for(auto& item : StabCalcBaseData::inclining_mobile_weight_data_grid_view) { item.xg = ChangeFSPos::ShowX(item.xg_symbol); } for(auto& item : StabCalcBaseData::inclining_extra_weight_data_grid_view) { item.xg = ChangeFSPos::ShowX(item.xg_symbol); } for(auto& item : StabCalcBaseData::inclining_absent_weight_data_grid_view) { item.xg = ChangeFSPos::ShowX(item.xg_symbol); } for(auto& item : StabCalcBaseData::inclining_relocate_weight_data_grid_view) { item.xg = ChangeFSPos::ShowX(item.xg_symbol); } } void BinfTabpage::convertFromJson(json& j, eBinfTabpage_Type type) { //std::vector binf_data_grid_view_tmp; // getDisPlayData(type, binf_data_grid_view_tmp); StabCalcBaseData::convertFromJson(j, "binf_data_grid_view", StabCalcBaseData::binf_data_grid_view); StabCalcBaseData::convertFromJson(j, "shell_data_grid_view", StabCalcBaseData::shell_data_grid_view); } void BinfTabpage::convertToJson(json& j, eBinfTabpage_Type type) { std::vector binf_data_grid_view_tmp; getDisPlayData(type, binf_data_grid_view_tmp); StabCalcBaseData::convertToJson(j, "binf_data_grid_view", binf_data_grid_view_tmp); StabCalcBaseData::convertToJson(j, "shell_data_grid_view", StabCalcBaseData::shell_data_grid_view); // QString data = QString::fromStdString(j.dump()); // int a = 0; } void BinfTabpage::getDisPlayData(eBinfTabpage_Type type, std::vector& binf_data_grid_view) { binf_data_grid_view = StabCalcBaseData::binf_data_grid_view; switch (type) { case eBinfTabpage_Type_Hydro: { // 元素处理 std::unordered_set visible_set = { "XType", "IsCatamaran", "IsBox", "DraftList", "TrimList", "AngleEvalMax", "AngleEvalInterval" }; binf_data_grid_view.erase( std::remove_if( binf_data_grid_view.begin(), binf_data_grid_view.end(), [&visible_set](const BInf& item) { return visible_set.find(item.paramid) == visible_set.end(); // 使用 find() 替代 contains() }), binf_data_grid_view.end()); } break; case eBinfTabpage_Type_TankCap: { // 元素处理 std::unordered_set visible_set = { "XType", "IsCatamaran", "IsBox", "TankCapStep" }; binf_data_grid_view.erase( std::remove_if( binf_data_grid_view.begin(), binf_data_grid_view.end(), [&visible_set](const BInf& item) { return visible_set.find(item.paramid) == visible_set.end(); // 使用 find() 替代 contains() }), binf_data_grid_view.end()); } break; case eBinfTabpage_Type_Intact: { // 元素处理 set_binf_visible_stab(binf_data_grid_view, "Intact"); } break; case eBinfTabpage_Type_AllowKG: { set_binf_visible_stab(binf_data_grid_view, "AllowKG"); } break; case eBinfTabpage_Type_Damage: { // 元素处理 set_binf_visible_stab(binf_data_grid_view, "Damage"); } break; case eBinfTabpage_Type_DamageProb: { // 元素处理 set_binf_visible_damage_prob(binf_data_grid_view, "DamageProb"); } break; case eBinfTabpage_Type_Inclining: { // 元素处理 std::unordered_set visible_set = { "IncliningRecordNo", "IsCatamaran", "IncliningDensity", "AT", "IncliningAH0", "IncliningMobileWeightNo", "IncliningDeviceType", "IncliningDeviceNo", "IncliningAngleAlgorithm", "IncliningGMAlgorithm" }; binf_data_grid_view.erase( std::remove_if( binf_data_grid_view.begin(), binf_data_grid_view.end(), [&visible_set](const BInf& item) { return visible_set.find(item.paramid) == visible_set.end(); // 使用 find() 替代 contains() }), binf_data_grid_view.end()); } break; case eBinfTabpage_Type_Size: break; default: break; } } void Hydro::convertToJson(json& j) { binf_tabpage1.convertToJson(j["binf_tabpage1"], eBinfTabpage_Type_Hydro); hydro_floodpoint_tabpage3.convertToJson(j["hydro_floodpoint_tabpage3"]); tank_cap_compartment_tabpage20.convertToJson(j["tank_cap_compartment_tabpage20"]); } void Hydro::convertFromJson(json& j) { if (j.contains("binf_tabpage1")) { binf_tabpage1.convertFromJson(j["binf_tabpage1"], eBinfTabpage_Type_Hydro); } if (j.contains("hydro_floodpoint_tabpage3")) { hydro_floodpoint_tabpage3.convertFromJson(j["hydro_floodpoint_tabpage3"]); } if (j.contains("tank_cap_compartment_tabpage20")) { tank_cap_compartment_tabpage20.convertFromJson(j["tank_cap_compartment_tabpage20"]); } } void TankCap::convertToJson(json& j) { binf_tabpage1.convertToJson(j["binf_tabpage1"], eBinfTabpage_Type_TankCap); tank_cap_compartment_tabpage20.convertToJson(j["tank_cap_compartment_tabpage20"]); hydro_floodpoint_tabpage3.convertToJson(j["hydro_floodpoint_tabpage3"]); } void TankCap::convertFromJson(json& j) { if (j.contains("binf_tabpage1")) { binf_tabpage1.convertFromJson(j["binf_tabpage1"], eBinfTabpage_Type_TankCap); } if (j.contains("tank_cap_compartment_tabpage20")) { tank_cap_compartment_tabpage20.convertFromJson(j["tank_cap_compartment_tabpage20"]); } if (j.contains("hydro_floodpoint_tabpage3")) { hydro_floodpoint_tabpage3.convertFromJson(j["hydro_floodpoint_tabpage3"]); } } void Intact::convertToJson(json& j) { binf_tabpage1.convertToJson(j["binf_tabpage1"], eBinfTabpage_Type_Intact); // 基本信息 intact_lwt_tabpage2.convertToJson(j["intact_lwt_tabpage2"]); // 空船重量 intact_partial_load_tabpage1.convertToJson(j["intact_partial_load_tabpage1"]);// 装载项 intact_wind_tabpage5.convertToJson(j["intact_wind_tabpage5"]); // 受风项 intact_case_tabpage6.convertToJson(j["intact_case_tabpage6"]); // 完整工况 allow_nm_tabpage1.convertToJson(j["allow_nm_tabpage1"]); // 许用剪力弯矩 tank_cap_compartment_tabpage20.convertToJson(j["tank_cap_compartment_tabpage20"]); // 舱室 hydro_floodpoint_tabpage3.convertToJson(j["hydro_floodpoint_tabpage3"]); // 船型特征点 } void Intact::convertFromJson(json& j) { if (j.contains("binf_tabpage1")) { binf_tabpage1.convertFromJson(j["binf_tabpage1"], eBinfTabpage_Type_TankCap); } if (j.contains("intact_lwt_tabpage2")) { intact_lwt_tabpage2.convertFromJson(j["intact_lwt_tabpage2"]); } if (j.contains("intact_partial_load_tabpage1")) { intact_partial_load_tabpage1.convertFromJson(j["intact_partial_load_tabpage1"]); } if (j.contains("intact_wind_tabpage5")) { intact_wind_tabpage5.convertFromJson(j["intact_wind_tabpage5"]); } if (j.contains("intact_case_tabpage6")) { intact_case_tabpage6.convertFromJson(j["intact_case_tabpage6"]); } if (j.contains("allow_nm_tabpage1")) { allow_nm_tabpage1.convertFromJson(j["allow_nm_tabpage1"]); } if (j.contains("tank_cap_compartment_tabpage20")) { tank_cap_compartment_tabpage20.convertFromJson(j["tank_cap_compartment_tabpage20"]); } if (j.contains("hydro_floodpoint_tabpage3")) { hydro_floodpoint_tabpage3.convertFromJson(j["hydro_floodpoint_tabpage3"]); } } void AllowKG::convertToJson(json& j) { binf_tabpage1.convertToJson(j["binf_tabpage1"], eBinfTabpage_Type_AllowKG); } void AllowKG::convertFromJson(json& j) { if (j.contains("binf_tabpage1")) { binf_tabpage1.convertFromJson(j["binf_tabpage1"], eBinfTabpage_Type_AllowKG); } } void Damage::convertToJson(json& j) { binf_tabpage1.convertToJson(j["binf_tabpage1"], eBinfTabpage_Type_Damage); damage_case_tabpage19.convertToJson(j["damage_case_tabpage19"]); tank_cap_compartment_tabpage20.convertToJson(j["tank_cap_compartment_tabpage20"]); hydro_floodpoint_tabpage3.convertToJson(j["hydro_floodpoint_tabpage3"]); intact_lwt_tabpage2.convertToJson(j["intact_lwt_tabpage2"]); intact_partial_load_tabpage1.convertToJson(j["intact_partial_load_tabpage1"]); intact_wind_tabpage5.convertToJson(j["intact_wind_tabpage5"]); intact_case_tabpage6.convertToJson(j["intact_case_tabpage6"]); allow_nm_tabpage1.convertToJson(j["allow_nm_tabpage1"]); } void Damage::convertFromJson(json& j) { if (j.contains("binf_tabpage1")) { binf_tabpage1.convertFromJson(j["binf_tabpage1"], eBinfTabpage_Type_Damage); } if (j.contains("damage_case_tabpage19")) { damage_case_tabpage19.convertFromJson(j["damage_case_tabpage19"]); } if (j.contains("tank_cap_compartment_tabpage20")) { tank_cap_compartment_tabpage20.convertFromJson(j["tank_cap_compartment_tabpage20"]); } if (j.contains("hydro_floodpoint_tabpage3")) { hydro_floodpoint_tabpage3.convertFromJson(j["hydro_floodpoint_tabpage3"]); } if (j.contains("intact_lwt_tabpage2")) { intact_lwt_tabpage2.convertFromJson(j["intact_lwt_tabpage2"]); } if (j.contains("intact_partial_load_tabpage1")) { intact_partial_load_tabpage1.convertFromJson(j["intact_partial_load_tabpage1"]); } if (j.contains("intact_wind_tabpage5")) { intact_wind_tabpage5.convertFromJson(j["intact_wind_tabpage5"]); } if (j.contains("intact_case_tabpage6")) { intact_case_tabpage6.convertFromJson(j["intact_case_tabpage6"]); } if (j.contains("allow_nm_tabpage1")) { allow_nm_tabpage1.convertFromJson(j["allow_nm_tabpage1"]); } } void DamageProb::convertToJson(json& j) { binf_tabpage1.convertToJson(j["binf_tabpage1"], eBinfTabpage_Type_DamageProb); damage_case_prob_tabpage.convertToJson(j["damage_case_prob_tabpage"]); tank_cap_compartment_tabpage20.convertToJson(j["tank_cap_compartment_tabpage20"]); hydro_floodpoint_tabpage3.convertToJson(j["hydro_floodpoint_tabpage3"]); } void DamageProb::convertFromJson(json& j) { if (j.contains("binf_tabpage1")) { binf_tabpage1.convertFromJson(j["binf_tabpage1"], eBinfTabpage_Type_DamageProb); } if (j.contains("damage_case_prob_tabpage")) { damage_case_prob_tabpage.convertFromJson(j["damage_case_prob_tabpage"]); } if (j.contains("tank_cap_compartment_tabpage20")) { tank_cap_compartment_tabpage20.convertFromJson(j["tank_cap_compartment_tabpage20"]); } if (j.contains("hydro_floodpoint_tabpage3")) { hydro_floodpoint_tabpage3.convertFromJson(j["hydro_floodpoint_tabpage3"]); } } void Inclining::convertToJson(json& j) { binf_tabpage1.convertToJson(j["binf_tabpage1"], eBinfTabpage_Type_Inclining); inclining_status_tabpage1.convertToJson(j["inclining_status_tabpage1"]); inclining_loading_tabpage1.convertToJson(j["inclining_loading_tabpage1"]); inclining_record_tabpage1.convertToJson(j["inclining_record_tabpage1"]); } void Inclining::convertFromJson(json& j) { if (j.contains("binf_tabpage1")) { binf_tabpage1.convertFromJson(j["binf_tabpage1"], eBinfTabpage_Type_Inclining); } if (j.contains("inclining_status_tabpage1")) { inclining_status_tabpage1.convertFromJson(j["inclining_status_tabpage1"]); } if (j.contains("inclining_loading_tabpage1")) { inclining_loading_tabpage1.convertFromJson(j["inclining_loading_tabpage1"]); } if (j.contains("inclining_record_tabpage1")) { inclining_record_tabpage1.convertFromJson(j["inclining_record_tabpage1"]); } } // 数据检查-静水力 std::string Hydro::data_check(const nlohmann::json &j) { std::string err; err = err + check_basic_inf(j); err = err + check_shell(j); err = err + check_limit_static_point(j); return err; } // 数据检查-舱容 std::string TankCap::data_check(const nlohmann::json &j) { std::string err; err = err + check_basic_inf(j); const auto &compartment_j = j["tank_cap_compartment_tabpage20"]["compartment_data_grid_view"]; if (compartment_j.size() < 1) { err = err + "\n舱室数据不能为空"; } else { err = err + check_compartment(compartment_j); } return err; } // 数据检查-完整稳性 std::string Intact::data_check(const nlohmann::json &j) { std::string err; err = err + check_basic_inf(j); // err = err + check_cr_rule(j); err = err + check_shell(j); const auto &compartment_j = j["tank_cap_compartment_tabpage20"]["compartment_data_grid_view"]; err = err + check_compartment(compartment_j); err = err + check_lwt(j); err = err + check_wind(j); err = err + check_partial_load(j); err = err + check_partial_load_item(j); err = err + check_case(j); return err; } // 数据检查-许用重心高度 std::string AllowKG::data_check(const nlohmann::json &j) { std::string err; return err; } // 数据检查-破损稳性 std::string Damage::data_check(const nlohmann::json &j) { std::string err; err = err + check_basic_inf(j); // err = err + check_cr_rule(j); err = err + check_shell(j); const nlohmann::json &j_compartment_array = j["tank_cap_compartment_tabpage20"]["compartment_data_grid_view"]; if (j_compartment_array.size() < 1) { err = err + "\n" + "舱室数据不能为空"; } err = err + check_compartment(j_compartment_array); err = err + check_lwt(j); err = err + check_wind(j); err = err + check_partial_load(j); err = err + check_partial_load_item(j); err = err + check_case(j); return err; } // 数据检查-概率破损 std::string DamageProb::data_check(const nlohmann::json &j) { std::string err; err = err + check_shell(j); //TODO return err; } // 数据检查-倾斜试验 std::string Inclining::data_check(const nlohmann::json &j) { std::string err; err = err + check_shell(j); //TODO return err; }