From 4e055c66ebbf7bbdd68d688a5a2da1a5e3f420f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BF=98=E4=B8=8D=E5=A6=82=E4=B8=80=E5=8F=AA=E7=8C=AA?= =?UTF-8?q?=E5=A8=81=E6=AD=A6?= Date: Thu, 9 Nov 2023 11:49:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0model?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 6 +- application.ini | 4 +- controller/simulation_controller.cpp | 14 +- controller/simulation_controller.h | 11 +- ddl/zy_electromagnetic.sql | 289 +++++++++++++++++++++++++++ entity/map_entity.h | 8 +- handler/kafka_handler.cpp | 8 +- main.cpp | 20 +- service/simulation_service.cpp | 53 +++++ service/simulation_service.h | 42 ++++ service/simulation_task.cpp | 17 ++ service/simulation_task.h | 35 ++++ service/timer_service.cpp | 3 - 13 files changed, 469 insertions(+), 41 deletions(-) create mode 100644 ddl/zy_electromagnetic.sql create mode 100644 service/simulation_task.cpp create mode 100644 service/simulation_task.h diff --git a/CMakeLists.txt b/CMakeLists.txt index fa30057..b3a2f0f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,12 +6,12 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L${CMAKE_CURRENT_BINARY_DIR}") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L${CMAKE_CURRENT_BINARY_DIR}") if(WIN32) set(CMAKE_PREFIX_PATH $ENV{QT_5_MINGW64}) set(BOOST_INCLUDES third_party/boost-1_83/include) - set(BOOST_LIBRARIES third_party/boost-1_83/lib) +# set(BOOST_LIBRARIES third_party/boost-1_83/lib) endif () if(APPLE) @@ -67,7 +67,7 @@ target_link_libraries(${PROJECT_NAME} PUBLIC rdkafka rdkafka++ QxOrm - ${BOOST_LIBRARIES} +# ${BOOST_LIBRARIES} ) include(third_party/QxOrm/QxOrm.cmake) diff --git a/application.ini b/application.ini index 95c2389..ab49987 100644 --- a/application.ini +++ b/application.ini @@ -1,9 +1,9 @@ [database] host=localhost port=3306 -database=sim +database=zy_electromagnetic username=root -password=root123 +password=root@1234 driver=QMYSQL [kafka] diff --git a/controller/simulation_controller.cpp b/controller/simulation_controller.cpp index 9f759fc..e3248f2 100644 --- a/controller/simulation_controller.cpp +++ b/controller/simulation_controller.cpp @@ -4,8 +4,6 @@ void SimulationController::route(const QString &key, const QString &message) { qDebug() << "form simulation" << key << message; - - } void SimulationController::setStepTime(int stepTime) { @@ -17,15 +15,11 @@ void SimulationController::setStepTime(int stepTime) { } -void SimulationController::start(long mapId) { - - - - - +void SimulationController::start() { + SimulationService::ins()->start(); } -void SimulationController::stop(long simId) { - +void SimulationController::stop() { + SimulationService::ins()->end(); } diff --git a/controller/simulation_controller.h b/controller/simulation_controller.h index aa9b913..b0f1a7b 100644 --- a/controller/simulation_controller.h +++ b/controller/simulation_controller.h @@ -4,6 +4,8 @@ #include "../include/controller/base_controller.h" #include "../service/simulation_service.h" +#include "../entity/scene.h" +#include "../entity/scene_task.h" class SimulationController : public BaseController { @@ -20,19 +22,19 @@ public: * 开始仿真 * @param mapId 场景id */ - void start(long mapId); + void start(); /** * 停止仿真 * @param simId 仿真id */ - void stop(long simId); + void stop(); /*** * 暂停/继续 仿真 * @param simID */ - void pause(long simID); + void pause(); /** * 播放速度控制 @@ -40,9 +42,6 @@ public: */ void speed(); - - - public slots: void route(const QString& key, const QString& message) override; diff --git a/ddl/zy_electromagnetic.sql b/ddl/zy_electromagnetic.sql new file mode 100644 index 0000000..8354e35 --- /dev/null +++ b/ddl/zy_electromagnetic.sql @@ -0,0 +1,289 @@ +/* + Navicat Premium Data Transfer + + Source Server : 10.0.0.10 + Source Server Type : MySQL + Source Server Version : 80034 + Source Host : 10.0.0.10:3306 + Source Schema : zy_electromagnetic + + Target Server Type : MySQL + Target Server Version : 80034 + File Encoding : 65001 + + Date: 07/11/2023 09:41:04 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for t_config_communicate_old +-- ---------------------------- +DROP TABLE IF EXISTS `t_config_communicate_old`; +CREATE TABLE `t_config_communicate_old` ( + `Id` int UNSIGNED NOT NULL AUTO_INCREMENT, + `SystemName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '通信系统名称', + `CommunicateType` int NOT NULL COMMENT '通信方式: 1:tcp客户端,2:tcp服务端,3:udp发送端,4:udp接收端,5:kafka生产者,6kafak消费者7串口', + `Address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '网络地址', + `Port` int NOT NULL COMMENT '端口', + `LogicAddress` int NULL DEFAULT NULL COMMENT '协议分配的逻辑地址', + `ExtraName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '主题名称或串口名称', + `SystemType` tinyint NULL DEFAULT NULL COMMENT '系统类型 1:外部,2:内部,3:显控与服务器', + `Descraption` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '描述', + PRIMARY KEY (`Id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 9 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of t_config_communicate_old +-- ---------------------------- +INSERT INTO `t_config_communicate_old` VALUES (3, '红外单光子复合侦测子系统', 3, '10.0.0.1', 10003, 275, '', 1, '显控连接光电'); +INSERT INTO `t_config_communicate_old` VALUES (4, '综合信息处理软件1', 4, '127.0.0.1', 10001, 529, NULL, 2, '连接显控软件'); +INSERT INTO `t_config_communicate_old` VALUES (5, '接口及管理软件1', 4, '127.0.0.1', 10002, 273, NULL, 2, '连接显控软件'); +INSERT INTO `t_config_communicate_old` VALUES (6, '综控模块软件1', 4, '127.0.0.1', 10003, 1041, NULL, 2, '连接显控软件'); +INSERT INTO `t_config_communicate_old` VALUES (7, 'KafkaConsumer', 6, '127.0.0.1', 1, NULL, 'main', 2, 'test'); +INSERT INTO `t_config_communicate_old` VALUES (8, 'KafkaConsumer1', 6, '127.0.0.1', 1, NULL, 'task', 2, 'test'); +INSERT INTO `t_config_communicate_old` VALUES (9, '数据链/塔康信号空中目标分布式侦测定位系统', 1, '10.1.1.0', 8080, 200, '', 1, ''); + +-- ---------------------------- +-- Table structure for t_model_antenna +-- ---------------------------- +DROP TABLE IF EXISTS `t_model_antenna`; +CREATE TABLE `t_model_antenna` ( + `Id` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键', + `Name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '天线名称', + `No` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '天线ID', + `AntennaGain` int NULL DEFAULT NULL COMMENT '天线增益', + `PolarMode` tinyint NULL DEFAULT NULL COMMENT '极化方式\r\n0-水平极化\r\n1-垂直极化\r\n2-左旋圆极化\r\n3-右旋圆极化', + `WaveHWidth` double NULL DEFAULT NULL COMMENT '天线波束水平宽度', + `WaveVWidth` double NULL DEFAULT NULL COMMENT '天线波束垂直宽度', + `WaveOrientation` double NULL DEFAULT NULL COMMENT '天线波束方位', + `WavePitching` double NULL DEFAULT NULL COMMENT '天线波束俯仰', + `ScanMode` tinyint NULL DEFAULT NULL COMMENT '天线扫描方式', + `ScanSAngle` double NULL DEFAULT NULL COMMENT '起始扫描角度', + `ScanEAngle` double NULL DEFAULT NULL COMMENT '终止扫描角度', + `ScanRate` double NULL DEFAULT NULL COMMENT '扫描速度', + `GraphName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '渲染模型文件', + `EquId` int NULL DEFAULT NULL COMMENT '装备模型ID', + PRIMARY KEY (`Id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '天线模型表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of t_model_antenna +-- ---------------------------- +INSERT INTO `t_model_antenna` VALUES (2, '大型鱼骨天线', 'YG-001', 20, 0, 1, 1, 2, 0, 1, 78, 128, 1, 'antenna.gra', 4); + +-- ---------------------------- +-- Table structure for t_model_equipment +-- ---------------------------- +DROP TABLE IF EXISTS `t_model_equipment`; +CREATE TABLE `t_model_equipment` ( + `Id` int UNSIGNED NOT NULL AUTO_INCREMENT, + `Name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '装备名称', + `Type` int NULL DEFAULT NULL COMMENT '装备类型\r\n0:通信装备\r\n1:侦察装备\r\n2:干扰装备', + `No` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '装备编号', + `PowerStatus` bit(1) NULL DEFAULT NULL COMMENT '开关机状态\r\n0-关机\r\n1-开机', + `TXTargetID` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '通信目标ID', + `Distance` double NULL DEFAULT NULL COMMENT '最大通信距离', + `GroupNo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '组网号', + `PMId` int NULL DEFAULT NULL COMMENT '平台模型ID', + PRIMARY KEY (`Id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '装备模型库' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of t_model_equipment +-- ---------------------------- +INSERT INTO `t_model_equipment` VALUES (4, '发射装备111', 0, 'EQ-SE-001', b'1', '2', 0, 't-01', 3); + +-- ---------------------------- +-- Table structure for t_model_platform +-- ---------------------------- +DROP TABLE IF EXISTS `t_model_platform`; +CREATE TABLE `t_model_platform` ( + `Id` int UNSIGNED NOT NULL AUTO_INCREMENT, + `Name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '平台模型名称', + `No` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '平台ID', + `Category` tinyint NULL DEFAULT NULL COMMENT '0-固定\r\n1-车载\r\n2-机载\r\n3-舰载\r\n4-星载\r\n5-弹载', + `MaxSpeed` double NULL DEFAULT NULL COMMENT '最大速度', + `TruningRadius` double NULL DEFAULT NULL COMMENT '转弯半径', + `GraphName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '渲染模型文件', + PRIMARY KEY (`Id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '平台模型表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of t_model_platform +-- ---------------------------- +INSERT INTO `t_model_platform` VALUES (3, '战斗机模型', 'ZDJ-001', 2, 1000, 123, 'plan.gra'); + +-- ---------------------------- +-- Table structure for t_model_receiver +-- ---------------------------- +DROP TABLE IF EXISTS `t_model_receiver`; +CREATE TABLE `t_model_receiver` ( + `Id` int UNSIGNED NOT NULL AUTO_INCREMENT, + `Name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '接收机名称', + `No` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '接收机ID', + `StartFreq` double NULL DEFAULT NULL COMMENT '起始工作频率(MHz)', + `EndFreq` double NULL DEFAULT NULL COMMENT '终止工作频率(MHz)', + `CenterFreq` double NULL DEFAULT NULL COMMENT '中心频率(MHz)', + `BandWidth` double NULL DEFAULT NULL COMMENT '工作带宽(MHz)', + `Sensitivity` double NULL DEFAULT NULL COMMENT '接收灵敏度(dBm)', + `FreqStandardDeviation` double NULL DEFAULT NULL COMMENT '频率标准差(Mhz)', + `FreqAvg` double NULL DEFAULT NULL COMMENT '频率均值(MHz)', + `BandStandardDeviation` double NULL DEFAULT NULL COMMENT '带宽标准差', + `BandAvg` double NULL DEFAULT NULL COMMENT '带宽均值', + `TimeStandardDeviation` double NULL DEFAULT NULL COMMENT '时间标准差', + `TimeAvg` double NULL DEFAULT NULL COMMENT '时间均值', + `DirecStandardDeviation` double NULL DEFAULT NULL COMMENT '方位标准差', + `DirecAvg` double NULL DEFAULT NULL COMMENT '方位均值', + `GraphName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '渲染模型文件', + `EquId` int NULL DEFAULT NULL COMMENT '装备模型ID', + PRIMARY KEY (`Id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '接收机模型表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of t_model_receiver +-- ---------------------------- +INSERT INTO `t_model_receiver` VALUES (2, '小型窄带接收机', 'RE-001', 1, 30, 10, 3, 1, 0, 10, 1, 1, 1, 1, 1, 1, 'receiver.gra', 4); + +-- ---------------------------- +-- Table structure for t_model_sender +-- ---------------------------- +DROP TABLE IF EXISTS `t_model_sender`; +CREATE TABLE `t_model_sender` ( + `Id` int UNSIGNED NOT NULL AUTO_INCREMENT, + `Name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '发射机名称', + `No` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '发射机ID', + `StartFreq` double NULL DEFAULT NULL COMMENT '起始工作频率(MHz)', + `EndFreq` double NULL DEFAULT NULL COMMENT '终止工作频率(MHz)', + `CenterFreq` double NULL DEFAULT NULL COMMENT '中心频率(MHz)', + `BandWidth` double NULL DEFAULT NULL COMMENT '工作带宽(MHz)', + `Power` double NULL DEFAULT NULL COMMENT '发射功率', + `GraphName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '渲染模型文件', + `EquId` int NULL DEFAULT NULL COMMENT '装备模型ID', + PRIMARY KEY (`Id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '发射机模型表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of t_model_sender +-- ---------------------------- +INSERT INTO `t_model_sender` VALUES (2, '大型10KW发射机', 'SE-001', 1, 30, 10, 3, 0, 'sender.gra', 4); + +-- ---------------------------- +-- Table structure for t_model_signal +-- ---------------------------- +DROP TABLE IF EXISTS `t_model_signal`; +CREATE TABLE `t_model_signal` ( + `Id` int UNSIGNED NOT NULL AUTO_INCREMENT, + `Category` int NULL DEFAULT NULL COMMENT '信号类型\r\n1.模拟信号\r\n2.数字信号\r\n3.跳频信号\r\n4.Link4A信号', + `SignalStyle` int NULL DEFAULT NULL COMMENT '信号样式', + `SNR` int NULL DEFAULT NULL COMMENT '信噪比', + `CarrierFreq` int NULL DEFAULT NULL COMMENT '载波频率(Hz)', + `BandWidth` double NULL DEFAULT NULL COMMENT '信号带宽', + `Sampling` int NULL DEFAULT NULL COMMENT '采样率', + `Baud` int NULL DEFAULT NULL COMMENT '波特率', + `StartCenterFreq` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '起始中心频率Hz(多个用逗号隔开)', + `EndCenterFreq` int NULL DEFAULT NULL COMMENT '终止中心频率Hz', + `Rate` int NULL DEFAULT NULL COMMENT '跳速(hop/s)', + `FreqCount` int NULL DEFAULT NULL COMMENT '频点个数', + `WorkMode` tinyint NULL DEFAULT NULL COMMENT '工作模式', + `SenderId` int NULL DEFAULT NULL COMMENT '发射机模型ID', + PRIMARY KEY (`Id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '信号模型表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of t_model_signal +-- ---------------------------- +INSERT INTO `t_model_signal` VALUES (3, 1, 1, 1, 30000000, 1, 9600, 9600, '12843000,9750000', 28500000, 1, 1, 1, 2); + +-- ---------------------------- +-- Table structure for t_scene +-- ---------------------------- +DROP TABLE IF EXISTS `t_scene`; +CREATE TABLE `t_scene` ( + `Id` int UNSIGNED NOT NULL AUTO_INCREMENT, + `SceneName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '场景名称', + `TerrainType` int NULL DEFAULT NULL COMMENT '地形类型 \r\n1.山地\r\n2.平原\r\n3.沙漠\r\n4.城市', + `WeatherType` int NULL DEFAULT NULL COMMENT '天气类型\r\n1.晴朗\r\n2.雪天\r\n3.雨天\r\n4.阴天', + `RectInfo` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '地形的矩形范围', + `BackSignalId` int NULL DEFAULT NULL COMMENT '背景信号Id', + PRIMARY KEY (`Id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '场景表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of t_scene +-- ---------------------------- +INSERT INTO `t_scene` VALUES (1, '雪地-低温-场景', 1, 1, '126.8101,31.0501|133.0921,33.8190', 1); + +-- ---------------------------- +-- Table structure for t_scene_task +-- ---------------------------- +DROP TABLE IF EXISTS `t_scene_task`; +CREATE TABLE `t_scene_task` ( + `Id` int UNSIGNED NOT NULL AUTO_INCREMENT, + `TaskName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '任务名称', + `SceneId` int NULL DEFAULT NULL COMMENT '场景Id', + `TaskStartTime` datetime NULL DEFAULT NULL COMMENT '任务开始时间', + `TaskEndTime` datetime NULL DEFAULT NULL COMMENT '任务结束时间', + `Status` int NULL DEFAULT NULL COMMENT '任务状态', + PRIMARY KEY (`Id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '任务' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of t_scene_task +-- ---------------------------- +INSERT INTO `t_scene_task` VALUES (1, '仿真任务1', 1, '2023-10-23 15:13:10', '2023-10-23 17:00:00', 62663472); + +-- ---------------------------- +-- Table structure for t_scene_task_plan +-- ---------------------------- +DROP TABLE IF EXISTS `t_scene_task_plan`; +CREATE TABLE `t_scene_task_plan` ( + `Id` int UNSIGNED NOT NULL AUTO_INCREMENT, + `TaskId` int NULL DEFAULT NULL COMMENT '任务ID', + `PMId` int NULL DEFAULT NULL COMMENT '平台ID', + `Position` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '初始位置', + `Team` int NULL DEFAULT NULL COMMENT '队伍\r\n1.红方\r\n2.蓝方', + `TrackPath` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '移动轨迹', + PRIMARY KEY (`Id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of t_scene_task_plan +-- ---------------------------- +INSERT INTO `t_scene_task_plan` VALUES (1, 1, 3, '110,110', 1, ''); +INSERT INTO `t_scene_task_plan` VALUES (2, 1, 3, '140,110', 2, NULL); + +-- ---------------------------- +-- Table structure for t_user_info_old +-- ---------------------------- +DROP TABLE IF EXISTS `t_user_info_old`; +CREATE TABLE `t_user_info_old` ( + `id` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键', + `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户名', + `password` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '密码(MD5加密)', + `role` int NULL DEFAULT NULL, + `authority` int NULL DEFAULT NULL COMMENT '和权限表1248与运算,1有0无', + `usable` int NULL DEFAULT NULL COMMENT '是否可用:0未启用,1启用', + `level` int NULL DEFAULT NULL COMMENT '用户等级(0-5)0最高', + `createTime` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 23 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; + +-- ---------------------------- +-- Records of t_user_info_old +-- ---------------------------- +INSERT INTO `t_user_info_old` VALUES (1, '管理员', '666', 1, 15, 1, 0, '2023-09-13 14:51:14'); +INSERT INTO `t_user_info_old` VALUES (3, '修改', 'ta', 1, 15, 1, 0, '2023-09-14 16:15:48'); +INSERT INTO `t_user_info_old` VALUES (4, '添加', 'ta', 1, 15, 1, 0, '2023-09-14 16:18:16'); +INSERT INTO `t_user_info_old` VALUES (5, '修改', 'aa', 1, 3, 1, 0, '2023-09-14 16:21:21'); +INSERT INTO `t_user_info_old` VALUES (9, '添加2', 'ta', 1, 7, 1, 0, '2023-09-25 14:23:43'); +INSERT INTO `t_user_info_old` VALUES (13, '添加3', 'ta', 1, 12, 1, 0, '2023-09-25 14:36:37'); +INSERT INTO `t_user_info_old` VALUES (15, '新增', 'ta', 1, 5, 1, 0, '2023-09-25 14:39:35'); +INSERT INTO `t_user_info_old` VALUES (19, '新增2', 'ta', 1, 7, 1, 0, '2023-09-25 15:19:41'); +INSERT INTO `t_user_info_old` VALUES (20, '新增3', 'ta', 1, 5, 1, 0, '2023-09-25 15:32:10'); +INSERT INTO `t_user_info_old` VALUES (21, '添加4', 'ta', 2, 1, 1, 0, '2023-09-25 15:51:22'); +INSERT INTO `t_user_info_old` VALUES (22, '添加5', 'ta', 3, 9, 1, 0, '2023-09-25 15:57:18'); +INSERT INTO `t_user_info_old` VALUES (23, '添加6', 'ta', 2, 15, 1, 0, '2023-09-25 16:21:18'); + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/entity/map_entity.h b/entity/map_entity.h index 0da56d7..7961acc 100644 --- a/entity/map_entity.h +++ b/entity/map_entity.h @@ -2,10 +2,12 @@ #ifndef CSCI_MAP_ENTITY_H #define CSCI_MAP_ENTITY_H -//#ifndef _MSC_VER -//#include -//#endif +#ifndef _MSC_VER +#include +#else #include +#endif + #include class MapEntity{ diff --git a/handler/kafka_handler.cpp b/handler/kafka_handler.cpp index 3b7783d..2dd20f9 100644 --- a/handler/kafka_handler.cpp +++ b/handler/kafka_handler.cpp @@ -73,7 +73,7 @@ void KafkaHandler::_receive(RdKafka::Message *message) { QString key; if(message->key()){ key = QString::fromStdString(*message->key()); - qDebug() << "receive message key:" << key; +// qDebug() << "receive message key:" << key; } // TODO header 校验 message->headers() @@ -84,15 +84,15 @@ void KafkaHandler::_receive(RdKafka::Message *message) { const RdKafka::Headers::Header hdr = hdrs[i]; if (hdr.value() != nullptr){ std::string value (static_cast(hdr.value()), hdr.value_size()); - qDebug() << "receive message headers: " << QString::fromStdString(hdr.key()) - << "-" << QString::fromStdString(value); +// qDebug() << "receive message headers: " << QString::fromStdString(hdr.key()) +// << "-" << QString::fromStdString(value); } } } std::string payload (static_cast(message->payload()), message->len()); auto msg = QString::fromStdString(payload); - qDebug() << "receive message payload:" << msg; +// qDebug() << "receive message payload:" << msg; emit getIns()->handle(key, msg); } diff --git a/main.cpp b/main.cpp index 46d254b..b34a53d 100644 --- a/main.cpp +++ b/main.cpp @@ -35,7 +35,7 @@ void init(){ // 初始化日志, 开启会记录日志到文件 // LogHandler::init(); // 初始化数据库 -// DataBaseHandler::init(); + DataBaseHandler::init(); // 初始化Kafka KafkaHandler::init(); // 初始化Controller @@ -64,20 +64,20 @@ int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); // 加载配置文件 -// loadConfig(QCoreApplication::applicationDirPath() + "/application.ini"); + loadConfig(QCoreApplication::applicationDirPath() + "/application.ini"); // 初始化系统 -// init(); + init(); /// test -start -// qDebug() << "init"; -// QString msg = "{\"name\":\"张三\"}"; -// QString key = "loadMap"; -// auto headers = RdKafka::Headers::create(); -// headers->add("token", "safdasgdagafgafdsghfsjh"); -// KafkaHandler::message("test_topic" , msg, key , headers); + qDebug() << "init"; + QString msg = "{\"name\":\"张三\"}"; + QString key = "loadMap"; + auto headers = RdKafka::Headers::create(); + headers->add("token", "safdasgdagafgafdsghfsjh"); + KafkaHandler::message("test_topic" , msg, key , headers); // boost_test(); - bessel_test(); +// bessel_test(); qDebug() << "sds"; /// test -end diff --git a/service/simulation_service.cpp b/service/simulation_service.cpp index ec47d26..fecc21d 100644 --- a/service/simulation_service.cpp +++ b/service/simulation_service.cpp @@ -1,2 +1,55 @@ #include "simulation_service.h" + +SimulationService::SimulationService():_run(false),_landform(0), _weather(0), _interval(200){ + _timer = new QTimer(this); +} + +SimulationService::~SimulationService() = default; + +void SimulationService::addTask(const SimulationTask& task) { + QObject::connect(this, SIGNAL(boost()), &task, SLOT(run())); + _tasks.push_back((SimulationTask *const &) task); +} + +void SimulationService::start() { + QObject::connect(_timer, SIGNAL(timeout()), this, SLOT(compute())); + _timer->start(_interval); +} + + +void SimulationService::end() { + _timer->stop(); +} + +void SimulationService::clear() { + // TODO 重置 +} + + +void SimulationService::compute() { + if (_run){ + emit boost(); + } +} + +SimulationService *SimulationService::ins() { + static SimulationService simulationService; + return &simulationService; +} + +void SimulationService::set(int landform, int weather, int interval, const QDateTime& startTime, const QDateTime& endTime) { + _landform = landform; + _weather = weather; + _interval = interval; + _startTime = startTime; + _endTime = endTime; +} + +void SimulationService::pause() { + _run = !_run; +} + + + + diff --git a/service/simulation_service.h b/service/simulation_service.h index 36ce955..3dc97c7 100644 --- a/service/simulation_service.h +++ b/service/simulation_service.h @@ -3,6 +3,9 @@ #define CSCI_SIMULATION_SERVICE_H #include +#include +#include +#include "simulation_task.h" #include "../include/code/err_code.h" enum SimulationCommand { START, STOP , PAUSE, RESUME, EXPEDITE, RETARD }; @@ -11,10 +14,49 @@ class SimulationService : public QObject{ Q_OBJECT +private: + + bool _run; // 运行开关 + + QTimer *_timer; // 定时器 + + int _landform; // 地形 + + int _weather; //天气 + + int _interval; // 步长 + + QDateTime _startTime; // 开始时间 + + QDateTime _endTime; // 结束时间 + + QList _tasks; + +private: + SimulationService(); + ~SimulationService() override; + public: + void set(int landform, int weather, int interval, const QDateTime& startTime,const QDateTime& endTime); + + void addTask(const SimulationTask& task); + + void start(); + void pause(); + + void end(); + + void clear(); + +public: + static SimulationService* ins(); +public: signals: + void boost(); +public slots: + void compute(); }; diff --git a/service/simulation_task.cpp b/service/simulation_task.cpp new file mode 100644 index 0000000..c322b19 --- /dev/null +++ b/service/simulation_task.cpp @@ -0,0 +1,17 @@ + +#include "simulation_task.h" + +SimulationTask::SimulationTask() = default; + +SimulationTask::SimulationTask(const SimulationTask &task) { +} + +void SimulationTask::run() { + QtConcurrent::run(compute, _state); +} + +void SimulationTask::setSate(const QString& key, const QVariant& state) { + _state.insert(key, state); +} + + diff --git a/service/simulation_task.h b/service/simulation_task.h new file mode 100644 index 0000000..86dc17e --- /dev/null +++ b/service/simulation_task.h @@ -0,0 +1,35 @@ + +#ifndef CSCI_SIMULATION_TASK_H +#define CSCI_SIMULATION_TASK_H + +#include +#include + +class SimulationTask:public QObject { + Q_OBJECT + +private: + QHash _state; + +public: + SimulationTask(); + + SimulationTask(const SimulationTask &task); + +public: + void setSate(const QString& key, const QVariant& state); + +public: + // TODO 具体模型需要实现的计算 + static void compute(QHash state); + +public:signals: + void feather(QVariant state); + +public slots: + void run(); + +}; + + +#endif //CSCI_SIMULATION_TASK_H diff --git a/service/timer_service.cpp b/service/timer_service.cpp index e41cb2d..f7e3cfd 100644 --- a/service/timer_service.cpp +++ b/service/timer_service.cpp @@ -9,10 +9,7 @@ void TimerService::start() { if(_run){ } - _run = true; - - _timer.start(_interval); }