4 次代碼提交 a7c512571c ... 685a8bcc5d

作者 SHA1 備註 提交日期
  tom 685a8bcc5d 更新sim表和seat表和数据。 2 月之前
  tom a474b4b99e 多Socket初步实现。 3 月之前
  tom b5e96d1ee4 添加 方向 参数。 3 月之前
  tom bc1d60189c backup SQL。 3 月之前

+ 20 - 19
pla-sim/01_SQL/02_table/mx_seat.sql

@@ -1,17 +1,17 @@
 /*
  Navicat Premium Dump SQL
 
- Source Server         : fhxy-192.168.1.61-polardbx
+ Source Server         : 47.104.188.84-sim
  Source Server Type    : MySQL
- Source Server Version : 80032 (8.0.32-X-Cluster-8.4.19-20241112)
- Source Host           : 192.168.1.61:4886
+ Source Server Version : 80020 (8.0.20)
+ Source Host           : 47.104.188.84:65006
  Source Schema         : pla-chem-sim-dev-1
 
  Target Server Type    : MySQL
- Target Server Version : 80032 (8.0.32-X-Cluster-8.4.19-20241112)
+ Target Server Version : 80020 (8.0.20)
  File Encoding         : 65001
 
- Date: 16/02/2025 16:36:14
+ Date: 10/03/2025 14:41:24
 */
 
 SET NAMES utf8mb4;
@@ -24,30 +24,31 @@ DROP TABLE IF EXISTS `mx_seat`;
 CREATE TABLE `mx_seat`  (
   `seat_id` bigint NOT NULL AUTO_INCREMENT COMMENT '座ID',
   `seat_num` int NOT NULL DEFAULT 0 COMMENT '座号',
-  `seat_bind_ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '绑定的IP地址',
+  `seat_bind_ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '学员端座次上[电脑]绑定的[IP地址]',
+  `seat_rs485_ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '学员端座次上[RS485]绑定的[IP地址]',
+  `seat_rs485_port` int NOT NULL COMMENT '学员端座次上[RS485]绑定的[端口]',
   `current_user_id` bigint NOT NULL DEFAULT 0 COMMENT '当前座上学员/用户ID',
+  `current_sim_id` bigint NULL DEFAULT NULL COMMENT '学员端座次上模拟器的ID',
   `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建者',
   `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
   `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新者',
   `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
   `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
   PRIMARY KEY (`seat_id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 181 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'sim-座表' ROW_FORMAT = DYNAMIC;
+) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'sim-座表' ROW_FORMAT = DYNAMIC;
 
 -- ----------------------------
 -- Records of mx_seat
 -- ----------------------------
-INSERT INTO `mx_seat` VALUES (1, 1, '192.168.1.101', 0, NULL, NULL, NULL, NULL, '座号01');
-INSERT INTO `mx_seat` VALUES (2, 2, '192.168.1.102', 0, NULL, NULL, NULL, NULL, '座号02');
-INSERT INTO `mx_seat` VALUES (3, 3, '192.168.1.103', 0, NULL, NULL, NULL, NULL, '座号03');
-INSERT INTO `mx_seat` VALUES (4, 4, '192.168.1.104', 0, NULL, NULL, NULL, NULL, '座号04');
-INSERT INTO `mx_seat` VALUES (5, 5, '192.168.1.105', 0, NULL, NULL, NULL, NULL, '座号05');
-INSERT INTO `mx_seat` VALUES (6, 6, '192.168.1.106', 0, NULL, NULL, NULL, NULL, '座号06');
-INSERT INTO `mx_seat` VALUES (7, 7, '192.168.1.107', 0, NULL, NULL, NULL, NULL, '座号07');
-INSERT INTO `mx_seat` VALUES (8, 8, '192.168.1.108', 0, NULL, NULL, NULL, NULL, '座号08');
-INSERT INTO `mx_seat` VALUES (9, 9, '192.168.1.109', 0, NULL, NULL, NULL, NULL, '座号09');
-INSERT INTO `mx_seat` VALUES (10, 10, '192.168.1.110', 0, NULL, NULL, NULL, NULL, '座号10');
-INSERT INTO `mx_seat` VALUES (151, 151, '192.168.1.151', 0, NULL, NULL, NULL, NULL, '李硕红米笔记本');
-INSERT INTO `mx_seat` VALUES (180, 180, '192.168.1.180', 0, NULL, NULL, NULL, NULL, '工控机');
+INSERT INTO `mx_seat` VALUES (1, 1, '192.168.1.101', '192.168.1.201', 10001, 0, 0, NULL, NULL, NULL, NULL, '座号01');
+INSERT INTO `mx_seat` VALUES (2, 2, '192.168.1.102', '192.168.1.201', 10002, 0, 0, NULL, NULL, NULL, NULL, '座号02');
+INSERT INTO `mx_seat` VALUES (3, 3, '192.168.1.103', '192.168.1.201', 10003, 0, 0, NULL, NULL, NULL, NULL, '座号03');
+INSERT INTO `mx_seat` VALUES (4, 4, '192.168.1.104', '192.168.1.201', 10004, 0, 0, NULL, NULL, NULL, NULL, '座号04');
+INSERT INTO `mx_seat` VALUES (5, 5, '192.168.1.105', '192.168.1.201', 10008, 0, 0, NULL, NULL, NULL, NULL, '座号05');
+INSERT INTO `mx_seat` VALUES (6, 6, '192.168.1.106', '192.168.1.202', 11001, 0, 0, NULL, NULL, NULL, NULL, '座号06');
+INSERT INTO `mx_seat` VALUES (7, 7, '192.168.1.107', '192.168.1.202', 11002, 0, 0, NULL, NULL, NULL, NULL, '座号07');
+INSERT INTO `mx_seat` VALUES (8, 8, '192.168.1.108', '192.168.1.202', 11003, 0, 0, NULL, NULL, NULL, NULL, '座号08');
+INSERT INTO `mx_seat` VALUES (9, 9, '192.168.1.109', '192.168.1.202', 11004, 0, 0, NULL, NULL, NULL, NULL, '座号09');
+INSERT INTO `mx_seat` VALUES (10, 10, '192.168.1.110', '192.168.1.202', 11008, 0, 0, NULL, NULL, NULL, NULL, '座号10');
 
 SET FOREIGN_KEY_CHECKS = 1;

+ 36 - 36
pla-sim/01_SQL/02_table/mx_sim.sql

@@ -1,17 +1,17 @@
 /*
  Navicat Premium Dump SQL
 
- Source Server         : fhxy-192.168.1.61-polardbx
+ Source Server         : 47.104.188.84-sim
  Source Server Type    : MySQL
- Source Server Version : 80032 (8.0.32-X-Cluster-8.4.19-20241112)
- Source Host           : 192.168.1.61:4886
+ Source Server Version : 80020 (8.0.20)
+ Source Host           : 47.104.188.84:65006
  Source Schema         : pla-chem-sim-dev-1
 
  Target Server Type    : MySQL
- Target Server Version : 80032 (8.0.32-X-Cluster-8.4.19-20241112)
+ Target Server Version : 80020 (8.0.20)
  File Encoding         : 65001
 
- Date: 16/02/2025 16:34:48
+ Date: 10/03/2025 14:41:16
 */
 
 SET NAMES utf8mb4;
@@ -27,7 +27,7 @@ CREATE TABLE `mx_sim`  (
   `sim_type` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '模拟器类型',
   `sim_state` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '模拟器状态:[0]:可用初始化,[1]:在线,[2]:模拟器离线,[3]:网关离线,[4]:硬件故障异常,[5]:手动禁用',
   `sim_sn` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '模拟器序列号',
-  `sim_num` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '模拟器设备编号',
+  `sim_num` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '模拟器设备通信编号-站ID',
   `last_sent_time` datetime NULL DEFAULT NULL COMMENT '最后一次成功发送报文时间',
   `last_received_time` datetime NULL DEFAULT NULL COMMENT '最后一次成功收到报文时间',
   `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建者',
@@ -41,35 +41,35 @@ CREATE TABLE `mx_sim`  (
 -- ----------------------------
 -- Records of mx_sim
 -- ----------------------------
-INSERT INTO `mx_sim` VALUES (1, 1, '0001', '1', '', '01', '2025-02-16 16:35:15', '2025-02-16 16:31:00', NULL, NULL, NULL, '2025-02-16 16:35:15', NULL);
-INSERT INTO `mx_sim` VALUES (2, 2, '0001', '2', '', '02', '2025-02-16 16:35:15', '2025-02-16 15:06:35', NULL, NULL, NULL, '2025-02-16 16:35:15', NULL);
-INSERT INTO `mx_sim` VALUES (3, 3, '0001', '2', '', '03', '2025-02-16 16:35:15', '2025-02-16 15:06:35', NULL, NULL, NULL, '2025-02-16 16:35:15', NULL);
-INSERT INTO `mx_sim` VALUES (4, 4, '0001', '1', '', '04', '2025-02-16 16:35:16', '2025-02-16 15:06:35', NULL, NULL, NULL, '2025-02-16 16:35:16', NULL);
-INSERT INTO `mx_sim` VALUES (5, 5, '0001', '1', '', '05', '2025-02-16 16:35:16', '2025-02-16 15:25:17', NULL, NULL, NULL, '2025-02-16 16:35:16', NULL);
-INSERT INTO `mx_sim` VALUES (6, 6, '0001', '1', '', '06', '2025-02-16 16:35:16', '2025-02-16 16:21:31', NULL, NULL, NULL, '2025-02-16 16:35:16', NULL);
-INSERT INTO `mx_sim` VALUES (7, 7, '0001', '2', '', '07', '2025-02-16 16:35:16', '2025-02-16 15:55:47', NULL, NULL, NULL, '2025-02-16 16:35:16', NULL);
-INSERT INTO `mx_sim` VALUES (8, 8, '0001', '1', '', '08', '2025-02-16 16:35:16', '2025-02-16 14:28:16', NULL, NULL, NULL, '2025-02-16 16:35:16', NULL);
-INSERT INTO `mx_sim` VALUES (9, 9, '0001', '1', '', '09', '2025-02-16 16:35:16', '2025-02-16 14:28:31', NULL, NULL, NULL, '2025-02-16 16:35:16', NULL);
-INSERT INTO `mx_sim` VALUES (10, 10, '0001', '1', '', '0A', '2025-02-16 16:35:16', '2025-02-16 16:19:16', NULL, NULL, NULL, '2025-02-16 16:35:16', NULL);
-INSERT INTO `mx_sim` VALUES (81, 1, '0002', '0', '', '51', '2025-02-16 14:50:45', '2025-02-15 22:01:00', NULL, NULL, NULL, '2025-02-16 14:50:45', NULL);
-INSERT INTO `mx_sim` VALUES (82, 2, '0002', '2', '', '52', '2025-02-16 14:50:45', '2025-02-15 21:44:04', NULL, NULL, NULL, '2025-02-16 14:50:45', NULL);
-INSERT INTO `mx_sim` VALUES (83, 3, '0002', '2', '', '53', '2025-02-16 14:50:46', '2025-02-15 21:44:04', NULL, NULL, NULL, '2025-02-16 14:50:46', NULL);
-INSERT INTO `mx_sim` VALUES (84, 4, '0002', '2', '', '54', '2025-02-16 14:50:46', '2025-02-15 21:44:04', NULL, NULL, NULL, '2025-02-16 14:50:46', NULL);
-INSERT INTO `mx_sim` VALUES (85, 5, '0002', '2', '', '55', '2025-02-16 14:50:46', '2025-02-15 21:43:16', NULL, NULL, NULL, '2025-02-16 14:50:46', NULL);
-INSERT INTO `mx_sim` VALUES (86, 6, '0002', '2', '', '56', '2025-02-16 14:50:46', '2025-02-15 21:44:04', NULL, NULL, NULL, '2025-02-16 14:50:46', NULL);
-INSERT INTO `mx_sim` VALUES (87, 7, '0002', '1', '', '57', '2025-02-16 16:32:45', '2025-02-16 16:32:45', NULL, NULL, NULL, '2025-02-16 16:32:45', NULL);
-INSERT INTO `mx_sim` VALUES (88, 8, '0002', '2', '', '58', '2025-02-16 14:50:47', '2025-02-15 21:51:18', NULL, NULL, NULL, '2025-02-16 14:50:47', NULL);
-INSERT INTO `mx_sim` VALUES (89, 9, '0002', '2', '', '59', '2025-02-16 14:50:47', '2025-02-16 13:07:19', NULL, NULL, NULL, '2025-02-16 14:50:47', NULL);
-INSERT INTO `mx_sim` VALUES (90, 10, '0002', '2', '', '5A', '2025-02-16 14:50:48', '2025-02-15 21:52:46', NULL, NULL, NULL, '2025-02-16 14:50:48', NULL);
-INSERT INTO `mx_sim` VALUES (161, 1, '0003', '0', '', 'A1', '2025-02-15 17:16:45', '2025-02-14 18:40:24', NULL, NULL, NULL, '2025-02-15 17:16:45', NULL);
-INSERT INTO `mx_sim` VALUES (162, 2, '0003', '0', '', 'A2', '2025-02-15 17:16:45', '2025-02-14 18:40:24', NULL, NULL, NULL, '2025-02-15 17:16:45', NULL);
-INSERT INTO `mx_sim` VALUES (163, 3, '0003', '0', '', 'A3', '2025-02-15 17:16:46', NULL, NULL, NULL, NULL, '2025-02-15 17:16:46', NULL);
-INSERT INTO `mx_sim` VALUES (164, 4, '0003', '0', '', 'A4', '2025-02-15 17:16:46', '2025-02-14 17:07:15', NULL, NULL, NULL, '2025-02-15 17:16:46', NULL);
-INSERT INTO `mx_sim` VALUES (165, 5, '0003', '0', '', 'A5', '2025-02-15 17:16:46', '2025-02-14 18:40:24', NULL, NULL, NULL, '2025-02-15 17:16:46', NULL);
-INSERT INTO `mx_sim` VALUES (166, 6, '0003', '0', '', 'A6', '2025-02-15 17:16:47', '2025-02-15 17:11:16', NULL, NULL, NULL, '2025-02-15 17:16:47', NULL);
-INSERT INTO `mx_sim` VALUES (167, 7, '0003', '0', '', 'A7', '2025-02-15 17:16:47', '2025-02-14 18:01:33', NULL, NULL, NULL, '2025-02-15 17:16:47', NULL);
-INSERT INTO `mx_sim` VALUES (168, 8, '0003', '0', '', 'A8', '2025-02-15 17:16:47', '2025-02-14 17:07:16', NULL, NULL, NULL, '2025-02-15 17:16:47', NULL);
-INSERT INTO `mx_sim` VALUES (169, 9, '0003', '0', '', 'A9', '2025-02-15 17:16:47', '2025-02-14 17:07:16', NULL, NULL, NULL, '2025-02-15 17:16:47', NULL);
-INSERT INTO `mx_sim` VALUES (170, 10, '0003', '0', '', 'AA', '2025-02-15 17:16:47', '2025-02-15 17:13:17', NULL, NULL, NULL, '2025-02-15 17:16:47', NULL);
+INSERT INTO `mx_sim` VALUES (1, 1, '0001', '2', '', '01', NULL, NULL, NULL, NULL, NULL, '2025-03-10 14:41:10', '');
+INSERT INTO `mx_sim` VALUES (2, 2, '0001', '2', '', '02', NULL, NULL, NULL, NULL, NULL, '2025-03-10 14:41:10', '');
+INSERT INTO `mx_sim` VALUES (3, 3, '0001', '2', '', '03', NULL, NULL, NULL, NULL, NULL, '2025-03-10 14:41:10', '');
+INSERT INTO `mx_sim` VALUES (4, 4, '0001', '2', '', '04', NULL, NULL, NULL, NULL, NULL, '2025-03-10 14:41:10', '');
+INSERT INTO `mx_sim` VALUES (5, 5, '0001', '2', '', '05', NULL, NULL, NULL, NULL, NULL, '2025-03-10 14:41:11', '');
+INSERT INTO `mx_sim` VALUES (6, 6, '0001', '2', '', '06', NULL, NULL, NULL, NULL, NULL, '2025-03-10 14:41:11', '');
+INSERT INTO `mx_sim` VALUES (7, 7, '0001', '2', '', '07', NULL, NULL, NULL, NULL, NULL, '2025-03-10 14:41:11', '');
+INSERT INTO `mx_sim` VALUES (8, 8, '0001', '2', '', '08', NULL, NULL, NULL, NULL, NULL, '2025-03-10 14:40:51', '');
+INSERT INTO `mx_sim` VALUES (9, 9, '0001', '2', '', '09', NULL, NULL, NULL, NULL, NULL, '2025-03-10 14:41:11', '');
+INSERT INTO `mx_sim` VALUES (10, 10, '0001', '2', '', '10', NULL, NULL, NULL, NULL, NULL, '2025-03-10 14:41:11', '');
+INSERT INTO `mx_sim` VALUES (81, 1, '0002', '2', '', '51', NULL, NULL, NULL, NULL, NULL, '2025-03-10 14:40:51', '');
+INSERT INTO `mx_sim` VALUES (82, 2, '0002', '2', '', '52', NULL, NULL, NULL, NULL, NULL, '2025-03-10 14:41:11', '');
+INSERT INTO `mx_sim` VALUES (83, 3, '0002', '2', '', '53', NULL, NULL, NULL, NULL, NULL, '2025-03-10 14:41:11', '');
+INSERT INTO `mx_sim` VALUES (84, 4, '0002', '2', '', '54', NULL, NULL, NULL, NULL, NULL, '2025-03-10 14:41:12', '');
+INSERT INTO `mx_sim` VALUES (85, 5, '0002', '2', '', '55', NULL, NULL, NULL, NULL, NULL, '2025-03-10 14:41:12', '');
+INSERT INTO `mx_sim` VALUES (86, 6, '0002', '2', '', '56', NULL, NULL, NULL, NULL, NULL, '2025-03-10 14:41:12', '');
+INSERT INTO `mx_sim` VALUES (87, 7, '0002', '2', '', '57', NULL, NULL, NULL, NULL, NULL, '2025-03-10 14:41:12', '');
+INSERT INTO `mx_sim` VALUES (88, 8, '0002', '2', '', '58', NULL, NULL, NULL, NULL, NULL, '2025-03-10 14:41:12', '');
+INSERT INTO `mx_sim` VALUES (89, 9, '0002', '2', '', '59', NULL, NULL, NULL, NULL, NULL, '2025-03-10 14:41:12', '');
+INSERT INTO `mx_sim` VALUES (90, 10, '0002', '2', '', '5A', NULL, NULL, NULL, NULL, NULL, '2025-03-10 14:41:12', '');
+INSERT INTO `mx_sim` VALUES (161, 1, '0003', '2', '', 'A1', NULL, NULL, NULL, NULL, NULL, '2025-03-10 14:41:12', '');
+INSERT INTO `mx_sim` VALUES (162, 2, '0003', '2', '', 'A2', NULL, NULL, NULL, NULL, NULL, '2025-03-10 14:41:12', '');
+INSERT INTO `mx_sim` VALUES (163, 3, '0003', '2', '', 'A3', NULL, NULL, NULL, NULL, NULL, '2025-03-10 14:41:12', '');
+INSERT INTO `mx_sim` VALUES (164, 4, '0003', '2', '', 'A4', NULL, NULL, NULL, NULL, NULL, '2025-03-10 14:41:13', '');
+INSERT INTO `mx_sim` VALUES (165, 5, '0003', '2', '', 'A5', NULL, NULL, NULL, NULL, NULL, '2025-03-10 14:41:13', '');
+INSERT INTO `mx_sim` VALUES (166, 6, '0003', '2', '', 'A6', NULL, NULL, NULL, NULL, NULL, '2025-03-10 14:41:13', '');
+INSERT INTO `mx_sim` VALUES (167, 7, '0003', '2', '', 'A7', NULL, NULL, NULL, NULL, NULL, '2025-03-10 14:40:43', '');
+INSERT INTO `mx_sim` VALUES (168, 8, '0003', '2', '', 'A8', NULL, NULL, NULL, NULL, NULL, '2025-03-10 14:41:13', '');
+INSERT INTO `mx_sim` VALUES (169, 9, '0003', '2', '', 'A9', NULL, NULL, NULL, NULL, NULL, '2025-03-10 14:41:13', '');
+INSERT INTO `mx_sim` VALUES (170, 10, '0003', '2', '', 'AA', NULL, NULL, NULL, NULL, NULL, '2025-03-10 14:41:13', '');
 
 SET FOREIGN_KEY_CHECKS = 1;

+ 15 - 12
pla-sim/01_SQL/02_table/sim_seat.sql

@@ -11,7 +11,7 @@
  Target Server Version : 80020 (8.0.20)
  File Encoding         : 65001
 
- Date: 08/02/2025 17:59:32
+ Date: 10/03/2025 14:41:02
 */
 
 SET NAMES utf8mb4;
@@ -24,8 +24,11 @@ DROP TABLE IF EXISTS `sim_seat`;
 CREATE TABLE `sim_seat`  (
   `seat_id` bigint NOT NULL AUTO_INCREMENT COMMENT '座ID',
   `seat_num` int NOT NULL DEFAULT 0 COMMENT '座号',
-  `seat_bind_ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '绑定的IP地址',
+  `seat_bind_ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '学员端座次上[电脑]绑定的[IP地址]',
+  `seat_rs485_ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '学员端座次上[RS485]绑定的[IP地址]',
+  `seat_rs485_port` int NOT NULL COMMENT '学员端座次上[RS485]绑定的[端口]',
   `current_user_id` bigint NOT NULL DEFAULT 0 COMMENT '当前座上学员/用户ID',
+  `current_sim_id` bigint NULL DEFAULT NULL COMMENT '学员端座次上模拟器的ID',
   `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建者',
   `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
   `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新者',
@@ -37,15 +40,15 @@ CREATE TABLE `sim_seat`  (
 -- ----------------------------
 -- Records of sim_seat
 -- ----------------------------
-INSERT INTO `sim_seat` VALUES (1, 1, '192.168.1.101', 0, NULL, NULL, NULL, NULL, '座号01');
-INSERT INTO `sim_seat` VALUES (2, 2, '192.168.1.102', 0, NULL, NULL, NULL, NULL, '座号02');
-INSERT INTO `sim_seat` VALUES (3, 3, '192.168.1.103', 0, NULL, NULL, NULL, NULL, '座号03');
-INSERT INTO `sim_seat` VALUES (4, 4, '192.168.1.104', 0, NULL, NULL, NULL, NULL, '座号04');
-INSERT INTO `sim_seat` VALUES (5, 5, '192.168.1.105', 0, NULL, NULL, NULL, NULL, '座号05');
-INSERT INTO `sim_seat` VALUES (6, 6, '192.168.1.106', 0, NULL, NULL, NULL, NULL, '座号06');
-INSERT INTO `sim_seat` VALUES (7, 7, '192.168.1.107', 0, NULL, NULL, NULL, NULL, '座号07');
-INSERT INTO `sim_seat` VALUES (8, 8, '192.168.1.108', 0, NULL, NULL, NULL, NULL, '座号08');
-INSERT INTO `sim_seat` VALUES (9, 9, '192.168.1.109', 0, NULL, NULL, NULL, NULL, '座号09');
-INSERT INTO `sim_seat` VALUES (10, 10, '192.168.1.110', 0, NULL, NULL, NULL, NULL, '座号10');
+INSERT INTO `sim_seat` VALUES (1, 1, '192.168.1.101', '192.168.1.201', 10001, 0, 0, NULL, NULL, NULL, NULL, '座号01');
+INSERT INTO `sim_seat` VALUES (2, 2, '192.168.1.102', '192.168.1.201', 10002, 0, 0, NULL, NULL, NULL, NULL, '座号02');
+INSERT INTO `sim_seat` VALUES (3, 3, '192.168.1.103', '192.168.1.201', 10003, 0, 0, NULL, NULL, NULL, NULL, '座号03');
+INSERT INTO `sim_seat` VALUES (4, 4, '192.168.1.104', '192.168.1.201', 10004, 0, 0, NULL, NULL, NULL, NULL, '座号04');
+INSERT INTO `sim_seat` VALUES (5, 5, '192.168.1.105', '192.168.1.201', 10008, 0, 0, NULL, NULL, NULL, NULL, '座号05');
+INSERT INTO `sim_seat` VALUES (6, 6, '192.168.1.106', '192.168.1.202', 11001, 0, 0, NULL, NULL, NULL, NULL, '座号06');
+INSERT INTO `sim_seat` VALUES (7, 7, '192.168.1.107', '192.168.1.202', 11002, 0, 0, NULL, NULL, NULL, NULL, '座号07');
+INSERT INTO `sim_seat` VALUES (8, 8, '192.168.1.108', '192.168.1.202', 11003, 0, 0, NULL, NULL, NULL, NULL, '座号08');
+INSERT INTO `sim_seat` VALUES (9, 9, '192.168.1.109', '192.168.1.202', 11004, 0, 0, NULL, NULL, NULL, NULL, '座号09');
+INSERT INTO `sim_seat` VALUES (10, 10, '192.168.1.110', '192.168.1.202', 11008, 0, 0, NULL, NULL, NULL, NULL, '座号10');
 
 SET FOREIGN_KEY_CHECKS = 1;

+ 36 - 36
pla-sim/01_SQL/02_table/sim_sim.sql

@@ -1,17 +1,17 @@
 /*
  Navicat Premium Dump SQL
 
- Source Server         : fhxy-192.168.1.61-polardbx
+ Source Server         : 47.104.188.84-sim
  Source Server Type    : MySQL
- Source Server Version : 80032 (8.0.32-X-Cluster-8.4.19-20241112)
- Source Host           : 192.168.1.61:4886
+ Source Server Version : 80020 (8.0.20)
+ Source Host           : 47.104.188.84:65006
  Source Schema         : pla-chem-sim-dev-1
 
  Target Server Type    : MySQL
- Target Server Version : 80032 (8.0.32-X-Cluster-8.4.19-20241112)
+ Target Server Version : 80020 (8.0.20)
  File Encoding         : 65001
 
- Date: 14/02/2025 17:04:58
+ Date: 10/03/2025 14:40:51
 */
 
 SET NAMES utf8mb4;
@@ -27,7 +27,7 @@ CREATE TABLE `sim_sim`  (
   `sim_type` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '模拟器类型',
   `sim_state` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '模拟器状态:[0]:可用初始化,[1]:在线,[2]:模拟器离线,[3]:网关离线,[4]:硬件故障异常,[5]:手动禁用',
   `sim_sn` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '模拟器序列号',
-  `sim_num` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '模拟器设备编号',
+  `sim_num` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '模拟器设备通信编号-站ID',
   `last_sent_time` datetime NULL DEFAULT NULL COMMENT '最后一次成功发送报文时间',
   `last_received_time` datetime NULL DEFAULT NULL COMMENT '最后一次成功收到报文时间',
   `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建者',
@@ -41,35 +41,35 @@ CREATE TABLE `sim_sim`  (
 -- ----------------------------
 -- Records of sim_sim
 -- ----------------------------
-INSERT INTO `sim_sim` VALUES (1, 1, '0001', '0', '', '01', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_sim` VALUES (2, 2, '0001', '0', '', '02', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_sim` VALUES (3, 3, '0001', '0', '', '03', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_sim` VALUES (4, 4, '0001', '0', '', '04', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_sim` VALUES (5, 5, '0001', '0', '', '05', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_sim` VALUES (6, 6, '0001', '0', '', '06', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_sim` VALUES (7, 7, '0001', '0', '', '07', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_sim` VALUES (8, 8, '0001', '0', '', '08', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_sim` VALUES (9, 9, '0001', '0', '', '09', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_sim` VALUES (10, 10, '0001', '0', '', '10', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_sim` VALUES (81, 1, '0002', '0', '', '51', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_sim` VALUES (82, 2, '0002', '0', '', '52', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_sim` VALUES (83, 3, '0002', '0', '', '53', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_sim` VALUES (84, 4, '0002', '0', '', '54', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_sim` VALUES (85, 5, '0002', '0', '', '55', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_sim` VALUES (86, 6, '0002', '0', '', '56', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_sim` VALUES (87, 7, '0002', '0', '', '57', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_sim` VALUES (88, 8, '0002', '0', '', '58', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_sim` VALUES (89, 9, '0002', '0', '', '59', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_sim` VALUES (90, 10, '0002', '0', '', '5A', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_sim` VALUES (161, 1, '0003', '0', '', 'A1', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_sim` VALUES (162, 2, '0003', '0', '', 'A2', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_sim` VALUES (163, 3, '0003', '0', '', 'A3', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_sim` VALUES (164, 4, '0003', '0', '', 'A4', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_sim` VALUES (165, 5, '0003', '0', '', 'A5', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_sim` VALUES (166, 6, '0003', '0', '', 'A6', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_sim` VALUES (167, 7, '0003', '0', '', 'A7', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_sim` VALUES (168, 8, '0003', '0', '', 'A8', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_sim` VALUES (169, 9, '0003', '0', '', 'A9', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-INSERT INTO `sim_sim` VALUES (170, 10, '0003', '0', '', 'AA', NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO `sim_sim` VALUES (1, 1, '0001', '0', '', '01', NULL, NULL, NULL, NULL, NULL, NULL, '');
+INSERT INTO `sim_sim` VALUES (2, 2, '0001', '0', '', '02', NULL, NULL, NULL, NULL, NULL, NULL, '');
+INSERT INTO `sim_sim` VALUES (3, 3, '0001', '0', '', '03', NULL, NULL, NULL, NULL, NULL, NULL, '');
+INSERT INTO `sim_sim` VALUES (4, 4, '0001', '0', '', '04', NULL, NULL, NULL, NULL, NULL, NULL, '');
+INSERT INTO `sim_sim` VALUES (5, 5, '0001', '0', '', '05', NULL, NULL, NULL, NULL, NULL, NULL, '');
+INSERT INTO `sim_sim` VALUES (6, 6, '0001', '0', '', '06', NULL, NULL, NULL, NULL, NULL, NULL, '');
+INSERT INTO `sim_sim` VALUES (7, 7, '0001', '0', '', '07', NULL, NULL, NULL, NULL, NULL, NULL, '');
+INSERT INTO `sim_sim` VALUES (8, 8, '0001', '0', '', '08', NULL, NULL, NULL, NULL, NULL, NULL, '');
+INSERT INTO `sim_sim` VALUES (9, 9, '0001', '0', '', '09', NULL, NULL, NULL, NULL, NULL, NULL, '');
+INSERT INTO `sim_sim` VALUES (10, 10, '0001', '0', '', '10', NULL, NULL, NULL, NULL, NULL, NULL, '');
+INSERT INTO `sim_sim` VALUES (81, 1, '0002', '0', '', '51', NULL, NULL, NULL, NULL, NULL, NULL, '');
+INSERT INTO `sim_sim` VALUES (82, 2, '0002', '0', '', '52', NULL, NULL, NULL, NULL, NULL, NULL, '');
+INSERT INTO `sim_sim` VALUES (83, 3, '0002', '0', '', '53', NULL, NULL, NULL, NULL, NULL, NULL, '');
+INSERT INTO `sim_sim` VALUES (84, 4, '0002', '0', '', '54', NULL, NULL, NULL, NULL, NULL, NULL, '');
+INSERT INTO `sim_sim` VALUES (85, 5, '0002', '0', '', '55', NULL, NULL, NULL, NULL, NULL, NULL, '');
+INSERT INTO `sim_sim` VALUES (86, 6, '0002', '0', '', '56', NULL, NULL, NULL, NULL, NULL, NULL, '');
+INSERT INTO `sim_sim` VALUES (87, 7, '0002', '0', '', '57', NULL, NULL, NULL, NULL, NULL, NULL, '');
+INSERT INTO `sim_sim` VALUES (88, 8, '0002', '0', '', '58', NULL, NULL, NULL, NULL, NULL, NULL, '');
+INSERT INTO `sim_sim` VALUES (89, 9, '0002', '0', '', '59', NULL, NULL, NULL, NULL, NULL, NULL, '');
+INSERT INTO `sim_sim` VALUES (90, 10, '0002', '0', '', '5A', NULL, NULL, NULL, NULL, NULL, NULL, '');
+INSERT INTO `sim_sim` VALUES (161, 1, '0003', '0', '', 'A1', NULL, NULL, NULL, NULL, NULL, NULL, '');
+INSERT INTO `sim_sim` VALUES (162, 2, '0003', '0', '', 'A2', NULL, NULL, NULL, NULL, NULL, NULL, '');
+INSERT INTO `sim_sim` VALUES (163, 3, '0003', '0', '', 'A3', NULL, NULL, NULL, NULL, NULL, NULL, '');
+INSERT INTO `sim_sim` VALUES (164, 4, '0003', '0', '', 'A4', NULL, NULL, NULL, NULL, NULL, NULL, '');
+INSERT INTO `sim_sim` VALUES (165, 5, '0003', '0', '', 'A5', NULL, NULL, NULL, NULL, NULL, NULL, '');
+INSERT INTO `sim_sim` VALUES (166, 6, '0003', '0', '', 'A6', NULL, NULL, NULL, NULL, NULL, NULL, '');
+INSERT INTO `sim_sim` VALUES (167, 7, '0003', '0', '', 'A7', NULL, NULL, NULL, NULL, NULL, NULL, '');
+INSERT INTO `sim_sim` VALUES (168, 8, '0003', '0', '', 'A8', NULL, NULL, NULL, NULL, NULL, NULL, '');
+INSERT INTO `sim_sim` VALUES (169, 9, '0003', '0', '', 'A9', NULL, NULL, NULL, NULL, NULL, NULL, '');
+INSERT INTO `sim_sim` VALUES (170, 10, '0003', '0', '', 'AA', NULL, NULL, NULL, NULL, NULL, NULL, '');
 
 SET FOREIGN_KEY_CHECKS = 1;

文件差異過大導致無法顯示
+ 11926 - 14
pla-sim/01_SQL/03_dev_backup/pla-chem-sim-dev-1.sql


+ 8 - 7
ruoyi-sim/src/main/java/com/ruoyi/sim/controller/HardwareCommDebugController.java

@@ -93,12 +93,13 @@ public class HardwareCommDebugController extends BaseController {
         return commSendService.debugWriteSelectedFaultBySimNum(simNum, faultIds, checkReplace);
     }
 
-    @GetMapping(value = "/debugBuildMsg/")
-    @ApiOperation("debugBuildMsg")
-    public AjaxResult debugBuildMsg(@RequestParam final String simNum,
-                                    @RequestParam final String cmd,
-                                    @RequestParam final String cmdId,
-                                    @RequestParam final String data) {
-        return commBuildService.debugBuildSendMsg(simNum, cmd, cmdId, data);
+    @GetMapping(value = "/buildMsg/")
+    @ApiOperation("buildMsg")
+    public AjaxResult buildSendMsg(@RequestParam final String simNum,
+                                   @RequestParam final String orn,
+                                   @RequestParam final String cmd,
+                                   @RequestParam final String cmdId,
+                                   @RequestParam final String data) {
+        return commBuildService.buildSendMsgAR(simNum, orn, cmd, cmdId, data);
     }
 }

+ 18 - 9
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/CommBuildService.java

@@ -9,7 +9,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.web.bind.annotation.RequestParam;
 
 import static com.ruoyi.sim.constant.CommConst.*;
 
@@ -67,10 +66,19 @@ public class CommBuildService {
     }
 
     public SimMsg buildSendMsg(final String simNum, final String cmd, final String cmdId) {
-        return buildSendMsg(simNum, cmd, cmdId, CMD_DATA_PLACE_HOLDER);
+        return buildSendMsg(simNum, ORN_SEND, cmd, cmdId, CMD_DATA_PLACE_HOLDER);
     }
 
-    public SimMsg buildSendMsg(final String simNum, final String cmd, final String cmdId, final String data) {
+    /**
+     *
+     * @param simNum
+     * @param orn
+     * @param cmd
+     * @param cmdId
+     * @param data
+     * @return
+     */
+    public SimMsg buildSendMsg(final String simNum, final String orn, final String cmd, final String cmdId, final String data) {
         SimMsg smS = new SimMsg();
         smS.setSimMsgId(idService.nextId());
         if (StringUtils.isEmpty(simNum) || StringUtils.isEmpty(cmd) || StringUtils.isEmpty(cmdId) || StringUtils.isEmpty(data)) {
@@ -91,7 +99,7 @@ public class CommBuildService {
         StringBuffer m = new StringBuffer();
         m.append(PREFIX);
         m.append(simNum);
-        m.append(ORN_SEND);
+        m.append(orn);
         m.append(cmd);
         m.append(cmdId);
         m.append(data);
@@ -115,11 +123,12 @@ public class CommBuildService {
         return smS;
     }
 
-    public AjaxResult debugBuildSendMsg(@RequestParam final String simNum,
-                                        @RequestParam final String cmd,
-                                        @RequestParam final String cmdId,
-                                        @RequestParam final String data) {
-        SimMsg sm = buildSendMsg(simNum, cmd, cmdId, data);
+    public AjaxResult buildSendMsgAR(final String simNum,
+                                     final String orn,
+                                     final String cmd,
+                                     final String cmdId,
+                                     final String data) {
+        final SimMsg sm = buildSendMsg(simNum, orn, cmd, cmdId, data);
         return AjaxResult.success(sm);
     }
 

+ 46 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/FailedCountService.java

@@ -0,0 +1,46 @@
+package com.ruoyi.sim.service.impl;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.concurrent.atomic.AtomicInteger;
+
+@Service
+public class FailedCountService {
+
+    private static final Logger l = LoggerFactory.getLogger(FailedCountService.class);
+
+    private static final int COUNT_0 = 0;
+    private static final int COUNT_ADD_1 = 1;
+    private static final int INIT_SIZE = 16;
+    private static HashMap<String, AtomicInteger> failedMap = new HashMap<>(INIT_SIZE);
+
+    public int plus1(final String ip) {
+        if (!failedMap.containsKey(ip)) {
+            failedMap.put(ip, new AtomicInteger(COUNT_ADD_1));
+        } else {
+            failedMap.get(ip).addAndGet(COUNT_ADD_1);
+        }
+        return failedMap.get(ip).get();
+    }
+
+    public int get(final String ip) {
+        if (failedMap.containsKey(ip)) {
+            return failedMap.get(ip).get();
+        } else {
+            return COUNT_0;
+        }
+    }
+
+    public void reset0(final String ip) {
+        failedMap.get(ip).set(COUNT_0);
+    }
+
+    public void resetAll() {
+        for (String ip : failedMap.keySet()) {
+            failedMap.remove(ip);
+        }
+    }
+}

+ 29 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/IpService.java

@@ -0,0 +1,29 @@
+package com.ruoyi.sim.service.impl;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+
+public class IpService {
+
+
+    /**
+     * 等同于ping命令。
+     *
+     * @param ip
+     * @return
+     * @throws IOException
+     */
+    public boolean isPingOk(final String ip) {
+        try {
+            InetAddress ia = InetAddress.getByName(ip);
+            return ia.isReachable(2048);
+        } catch (UnknownHostException e) {
+            e.printStackTrace();
+            return false;
+        } catch (IOException e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+}

+ 123 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/SocketService.java

@@ -0,0 +1,123 @@
+package com.ruoyi.sim.service.impl;
+
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.sim.config.SimConfig;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.Socket;
+import java.net.UnknownHostException;
+import java.util.HashMap;
+
+import static com.ruoyi.sim.constant.CommConst.SOCKET_TIME_OUT;
+
+@Service
+public class SocketService {
+
+    private static final Logger l = LoggerFactory.getLogger(SocketService.class);
+
+    private static final int INIT_SIZE = 16;
+    /**
+     * key:
+     * value:
+     */
+    private static HashMap<String, Socket> cachedMap = new HashMap<>(INIT_SIZE);
+
+
+    @Autowired
+    private SimConfig config;
+    @Autowired
+    private FailedCountService failedCountService;
+
+    /**
+     * @param ip
+     * @return true:socket ok!
+     */
+    public boolean isOk(final String ip) {
+        if (cachedMap.containsKey(ip)) {
+            Socket s = cachedMap.get(ip);
+            if (s != null) {
+                return (s.isConnected() && s.isBound() && !s.isClosed());
+            }
+        }
+        return false;
+    }
+
+    /**
+     * @param ip   ip v4.
+     * @param port
+     * @return
+     */
+    public AjaxResult openOne(final String ip, final int port) {
+        // check.
+        if (!config.isCommGlobal()) {
+            l.warn("isCommGlobal == false [模拟器通信被禁用!]");
+            return AjaxResult.error("模拟器通信被禁用!");
+        }
+        //
+        try {
+            if (!isOk(ip)) {
+                l.info("openSocket cachedSocket is not ok!new socket ip = {}!", ip);
+                closeOne(ip);
+                Socket s = new Socket(ip, port);
+                s.setSoTimeout(SOCKET_TIME_OUT);
+                cachedMap.put(ip, s);
+                // failed count reset.
+                failedCountService.reset0(ip);
+            }
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        } finally {
+
+        }
+        return null;
+    }
+
+    public AjaxResult closeOne(final String ip) {
+        String msgOk = "关闭Socket成功!";
+        if (!config.isCommGlobal()) {
+            l.warn("isCommGlobal == {} [模拟器通信被禁用!]", config.isCommGlobal());
+            return AjaxResult.error("模拟器通信被禁用!");
+        }
+        if (!cachedMap.containsKey(ip)) {
+            return AjaxResult.success(msgOk);
+        } else {
+            try {
+                Socket s = cachedMap.get(ip);
+                s.getInputStream().close();
+                s.getOutputStream().close();
+                s.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            } finally {
+                cachedMap.remove(ip);
+                // failed count reset.
+                failedCountService.reset0(ip);
+                return AjaxResult.success(msgOk);
+            }
+        }
+    }
+
+    public AjaxResult closeAll(final String[] ipArray) {
+        String msgOk = "关闭所有Socket成功!";
+        for (String ip : ipArray) {
+            AjaxResult ar = closeOne(ip);
+            if (ar != null && !ar.isSuccess()) {
+                return ar;
+            }
+        }
+        return AjaxResult.success(msgOk);
+    }
+
+    /**
+     * 初始化。
+     */
+    public void resetAll() {
+
+    }
+
+}

部分文件因文件數量過多而無法顯示