diff --git a/database/sqls/05-field-mapping-is-enabled.sql b/database/sqls/05-field-mapping-is-enabled.sql
new file mode 100644
index 0000000..b7db021
--- /dev/null
+++ b/database/sqls/05-field-mapping-is-enabled.sql
@@ -0,0 +1,35 @@
+-- ============================================================
+-- 05: 品牌字段映射增加启用/禁用开关
+-- 执行目标库:cnc_business
+-- 幂等:是(通过 IF NOT EXISTS 检查列是否已存在)
+-- ============================================================
+
+-- 1. 增加 is_enabled 列(默认启用)
+SET @dbname = 'cnc_business';
+SET @tablename = 'cnc_brand_field_mapping';
+SET @columnname = 'is_enabled';
+SET @preparedStatement = (SELECT IF(
+ (
+ SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
+ WHERE TABLE_SCHEMA = @dbname
+ AND TABLE_NAME = @tablename
+ AND COLUMN_NAME = @columnname
+ ) > 0,
+ 'SELECT 1',
+ 'ALTER TABLE cnc_brand_field_mapping ADD COLUMN is_enabled tinyint(1) NOT NULL DEFAULT 1 COMMENT ''是否启用:1=启用 0=禁用'' AFTER is_required'
+));
+PREPARE alterIfNotExists FROM @preparedStatement;
+EXECUTE alterIfNotExists;
+DEALLOCATE PREPARE alterIfNotExists;
+
+-- 2. 根据采集示例数据,禁用未出现的字段映射
+-- 采集示例中只出现了:_io_status, Tag5, Tag8, Tag9, Tag11, Tag22, Tag23
+-- 未出现的先设为禁用,后续可通过后台开关启用
+UPDATE cnc_brand_field_mapping SET is_enabled = 0
+WHERE field_name IN ('Tag14','Tag17','Tag18','Tag19','Tag20','Tag21','Tag24','Tag25','Tag26')
+ AND is_enabled = 1;
+
+-- 3. 验证结果
+SELECT id, standard_field, field_name, is_required, is_enabled
+FROM cnc_brand_field_mapping
+ORDER BY id;
diff --git a/frontend/src/views/brand/BrandEditPage.vue b/frontend/src/views/brand/BrandEditPage.vue
index c53c4b6..a05c8c9 100644
--- a/frontend/src/views/brand/BrandEditPage.vue
+++ b/frontend/src/views/brand/BrandEditPage.vue
@@ -13,12 +13,13 @@
字段映射列表+ 新增映射
-
+
+
删除
@@ -36,12 +37,12 @@ import request from '@/utils/request'
const route = useRoute()
const router = useRouter()
import type { Brand, ApiResponse } from '@/types'
-type BrandMappingForm = { standardField: string; fieldName: string; matchBy: string; dataType: string; isRequired: number }
+type BrandMappingForm = { standardField: string; fieldName: string; matchBy: string; dataType: string; isRequired: number; isEnabled: number }
const isEdit = !!route.params.id
const submitting = ref(false)
const standardFields = ['program_name','part_count','device_status','run_status','operate_mode','spindle_speed_set','feed_speed_set','spindle_speed_actual','feed_speed_actual','spindle_load','spindle_override','power_on_time','run_time','cutting_time','cycle_time','machining_status']
const form = reactive({ brandName: '', deviceField: 'device', tagsPath: 'tags', mappings: [] as BrandMappingForm[] })
-function addMapping() { form.mappings.push({ standardField: '', fieldName: '', matchBy: 'id', dataType: 'string', isRequired: 0 }) }
+function addMapping() { form.mappings.push({ standardField: '', fieldName: '', matchBy: 'id', dataType: 'string', isRequired: 0, isEnabled: 1 }) }
async function loadData() {
if (!isEdit) return
const r = await request.get(`/admin/brand/${route.params.id}`)
diff --git a/src/CncModels/Dto/Brand/BrandFieldMappingDto.cs b/src/CncModels/Dto/Brand/BrandFieldMappingDto.cs
index 1c91822..66a91f5 100644
--- a/src/CncModels/Dto/Brand/BrandFieldMappingDto.cs
+++ b/src/CncModels/Dto/Brand/BrandFieldMappingDto.cs
@@ -10,5 +10,7 @@ namespace CncModels.Dto.Brand
public string MatchBy { get; set; }
public string DataType { get; set; }
public int IsRequired { get; set; }
+
+ public int IsEnabled { get; set; }
}
}
diff --git a/src/CncModels/Entity/BrandFieldMapping.cs b/src/CncModels/Entity/BrandFieldMapping.cs
index 6fc2858..de3ba42 100644
--- a/src/CncModels/Entity/BrandFieldMapping.cs
+++ b/src/CncModels/Entity/BrandFieldMapping.cs
@@ -28,6 +28,9 @@ namespace CncModels.Entity
/// 是否必填
public int IsRequired { get; set; }
+ /// 是否启用
+ public int IsEnabled { get; set; }
+
/// 创建时间
public DateTime CreatedAt { get; set; }
}
diff --git a/src/CncRepository/Impl/BrandFieldMappingRepository.cs b/src/CncRepository/Impl/BrandFieldMappingRepository.cs
index 06b460a..8db72a7 100644
--- a/src/CncRepository/Impl/BrandFieldMappingRepository.cs
+++ b/src/CncRepository/Impl/BrandFieldMappingRepository.cs
@@ -19,8 +19,8 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"SELECT id as Id, brand_id as BrandId, standard_field as StandardField, field_name as FieldName, match_by as MatchBy, data_type as DataType, is_required as IsRequired, created_at as CreatedAt
- FROM cnc_brand_field_mapping WHERE brand_id = @BrandId ORDER BY id";
+ var sql = @"SELECT id as Id, brand_id as BrandId, standard_field as StandardField, field_name as FieldName, match_by as MatchBy, data_type as DataType, is_required as IsRequired, is_enabled as IsEnabled, created_at as CreatedAt
+ FROM cnc_brand_field_mapping WHERE brand_id = @BrandId ORDER BY id";
return conn.Query(sql, new { BrandId = brandId }).ToList();
}
}
@@ -29,8 +29,8 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"SELECT id as Id, brand_id as BrandId, standard_field as StandardField, field_name as FieldName, match_by as MatchBy, data_type as DataType, is_required as IsRequired, created_at as CreatedAt
- FROM cnc_brand_field_mapping WHERE id = @Id";
+ var sql = @"SELECT id as Id, brand_id as BrandId, standard_field as StandardField, field_name as FieldName, match_by as MatchBy, data_type as DataType, is_required as IsRequired, is_enabled as IsEnabled, created_at as CreatedAt
+ FROM cnc_brand_field_mapping WHERE id = @Id";
return conn.QuerySingleOrDefault(sql, new { Id = id });
}
}
@@ -39,9 +39,9 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"INSERT INTO cnc_brand_field_mapping (brand_id, standard_field, field_name, match_by, data_type, is_required, created_at)
- VALUES (@BrandId, @StandardField, @FieldName, @MatchBy, @DataType, @IsRequired, @CreatedAt);
- SELECT LAST_INSERT_ID();";
+ var sql = @"INSERT INTO cnc_brand_field_mapping (brand_id, standard_field, field_name, match_by, data_type, is_required, is_enabled, created_at)
+ VALUES (@BrandId, @StandardField, @FieldName, @MatchBy, @DataType, @IsRequired, @IsEnabled, @CreatedAt);
+ SELECT LAST_INSERT_ID();";
return conn.QuerySingle(sql, entity);
}
}
@@ -50,7 +50,7 @@ namespace CncRepository.Impl
{
using (var conn = CreateConnection())
{
- var sql = @"UPDATE cnc_brand_field_mapping SET brand_id = @BrandId, standard_field = @StandardField, field_name = @FieldName, match_by = @MatchBy, data_type = @DataType, is_required = @IsRequired, created_at = @CreatedAt WHERE id = @Id";
+ var sql = @"UPDATE cnc_brand_field_mapping SET brand_id = @BrandId, standard_field = @StandardField, field_name = @FieldName, match_by = @MatchBy, data_type = @DataType, is_required = @IsRequired, is_enabled = @IsEnabled, created_at = @CreatedAt WHERE id = @Id";
return conn.Execute(sql, entity) > 0;
}
}
@@ -74,8 +74,8 @@ namespace CncRepository.Impl
try
{
int count = 0;
- var sql = @"INSERT INTO cnc_brand_field_mapping (brand_id, standard_field, field_name, match_by, data_type, is_required, created_at)
- VALUES (@BrandId, @StandardField, @FieldName, @MatchBy, @DataType, @IsRequired, @CreatedAt);
+ var sql = @"INSERT INTO cnc_brand_field_mapping (brand_id, standard_field, field_name, match_by, data_type, is_required, is_enabled, created_at)
+ VALUES (@BrandId, @StandardField, @FieldName, @MatchBy, @DataType, @IsRequired, @IsEnabled, @CreatedAt);
SELECT LAST_INSERT_ID();";
foreach (var m in mappings)
{
@@ -94,5 +94,15 @@ namespace CncRepository.Impl
}
}
}
+
+ public List GetEnabledByBrandId(int brandId)
+ {
+ using (var conn = CreateConnection())
+ {
+ var sql = @"SELECT id as Id, brand_id as BrandId, standard_field as StandardField, field_name as FieldName, match_by as MatchBy, data_type as DataType, is_required as IsRequired, is_enabled as IsEnabled, created_at as CreatedAt
+ FROM cnc_brand_field_mapping WHERE brand_id = @BrandId AND is_enabled = 1 ORDER BY id";
+ return conn.Query(sql, new { BrandId = brandId }).ToList();
+ }
+ }
}
}
diff --git a/src/CncRepository/Interface/IBrandFieldMappingRepository.cs b/src/CncRepository/Interface/IBrandFieldMappingRepository.cs
index f91e88d..8df3456 100644
--- a/src/CncRepository/Interface/IBrandFieldMappingRepository.cs
+++ b/src/CncRepository/Interface/IBrandFieldMappingRepository.cs
@@ -14,5 +14,6 @@ namespace CncRepository.Interface
bool Update(BrandFieldMapping entity);
bool DeleteByBrandId(int brandId);
int BatchCreate(int brandId, List mappings);
+ List GetEnabledByBrandId(int brandId);
}
}
diff --git a/src/CncService/Impl/BrandService.cs b/src/CncService/Impl/BrandService.cs
index d16f1eb..bc1c668 100644
--- a/src/CncService/Impl/BrandService.cs
+++ b/src/CncService/Impl/BrandService.cs
@@ -56,15 +56,16 @@ namespace CncService.Impl
TagsPath = brand.TagsPath,
IsEnabled = brand.IsEnabled == 1,
FieldCount = mappings?.Count ?? 0,
- Mappings = mappings?.Select(m => new BrandFieldMappingDto
- {
- StandardField = m.StandardField,
- FieldName = m.FieldName,
- MatchBy = m.MatchBy,
- DataType = m.DataType,
- IsRequired = m.IsRequired
- }).ToList() ?? new List()
- };
+ Mappings = mappings?.Select(m => new BrandFieldMappingDto
+ {
+ StandardField = m.StandardField,
+ FieldName = m.FieldName,
+ MatchBy = m.MatchBy,
+ DataType = m.DataType,
+ IsRequired = m.IsRequired,
+ IsEnabled = m.IsEnabled
+ }).ToList() ?? new List()
+ };
return detail;
}
@@ -139,16 +140,17 @@ namespace CncService.Impl
var mappings = _mappingRepository.GetByBrandId(id);
if (mappings != null && mappings.Count > 0)
{
- var newMappings = mappings.Select(m => new BrandFieldMapping
- {
- BrandId = newBrandId,
- StandardField = m.StandardField,
- FieldName = m.FieldName,
- MatchBy = m.MatchBy,
- DataType = m.DataType,
- IsRequired = m.IsRequired,
- CreatedAt = DateTime.Now
- }).ToList();
+ var newMappings = mappings.Select(m => new BrandFieldMapping
+ {
+ BrandId = newBrandId,
+ StandardField = m.StandardField,
+ FieldName = m.FieldName,
+ MatchBy = m.MatchBy,
+ DataType = m.DataType,
+ IsRequired = m.IsRequired,
+ IsEnabled = m.IsEnabled,
+ CreatedAt = DateTime.Now
+ }).ToList();
_mappingRepository.BatchCreate(newBrandId, newMappings);
}
return newBrandId;
diff --git a/tests/CncRepository.Tests/BrandFieldMappingRepositoryTests.cs b/tests/CncRepository.Tests/BrandFieldMappingRepositoryTests.cs
index 6b8d82d..66b7850 100644
--- a/tests/CncRepository.Tests/BrandFieldMappingRepositoryTests.cs
+++ b/tests/CncRepository.Tests/BrandFieldMappingRepositoryTests.cs
@@ -40,6 +40,8 @@ namespace CncRepository.Tests
[Fact]
public void GetEnabledByBrandId_只返回启用的映射()
{
+ TestDb.Execute(@"INSERT IGNORE INTO cnc_brand (id, brand_name, device_field, tags_path, is_enabled, created_at, updated_at)
+ VALUES (1, 'FANUC', 'device', 'tags', 1, NOW(), NOW())");
TestDb.Execute(@"INSERT INTO cnc_brand_field_mapping (brand_id, standard_field, field_name, match_by, data_type, is_required, is_enabled, created_at)
VALUES (1, 'program_name', 'Tag5', 'id', 'string', 1, 1, NOW()),
(1, 'part_count', 'Tag8', 'id', 'number', 1, 1, NOW()),
@@ -52,6 +54,9 @@ namespace CncRepository.Tests
[Fact]
public void Create_默认启用()
{
+ // 确保 brand_id=1 存在
+ TestDb.Execute(@"INSERT IGNORE INTO cnc_brand (id, brand_name, device_field, tags_path, is_enabled, created_at, updated_at)
+ VALUES (1, 'FANUC', 'device', 'tags', 1, NOW(), NOW())");
var entity = new BrandFieldMapping
{
BrandId = 1,
@@ -85,6 +90,9 @@ namespace CncRepository.Tests
[Fact]
public void BatchCreate_批量插入保留启用状态()
{
+ // 确保 brand_id=1 存在
+ TestDb.Execute(@"INSERT IGNORE INTO cnc_brand (id, brand_name, device_field, tags_path, is_enabled, created_at, updated_at)
+ VALUES (1, 'FANUC', 'device', 'tags', 1, NOW(), NOW())");
var mappings = new[]
{
new BrandFieldMapping { StandardField = "f1", FieldName = "Tag1", MatchBy = "id", DataType = "string", IsRequired = 0, IsEnabled = 1, CreatedAt = DateTime.Now },
diff --git a/发那科系统采集示例.txt b/发那科系统采集示例.txt
index 0096a9f..69bbea9 100644
--- a/发那科系统采集示例.txt
+++ b/发那科系统采集示例.txt
@@ -1,280 +1 @@
-[
- {
- "device": "fanake_1.8",
- "desc": "西-1.8",
- "tags": [
- {
- "id": "_io_status",
- "desc": "设备状态",
- "quality": "0",
- "value": "1.00000",
- "time": "2026-04-10 17:36:38"
- },
- {
- "id": "Tag2",
- "desc": "当前轴数",
- "quality": "0",
- "value": "4.00000",
- "time": "2026-04-10 17:36:34"
- },
- {
- "id": "Tag5",
- "desc": "执行的NC主程序名",
- "quality": "0",
- "value": "1566.NC",
- "time": "2026-04-10 17:36:35"
- },
- {
- "id": "Tag6",
- "desc": "执行的NC主程序号",
- "quality": "0",
- "value": "N0",
- "time": "2026-04-10 17:36:35"
- },
- {
- "id": "Tag7",
- "desc": "当前加工程序内容",
- "quality": "0",
- "value": "<1566.NC>\nG40G49G80\n( NAME: Administrator )\n( M",
- "time": "2026-04-10 17:36:35"
- },
- {
- "id": "Tag8",
- "desc": "当前加工零件数",
- "quality": "0",
- "value": "1219.00000",
- "time": "2026-04-10 17:36:35"
- },
- {
- "id": "Tag9",
- "desc": "运行状态",
- "quality": "0",
- "value": "0.00000",
- "time": "2026-04-10 17:36:36"
- },
- {
- "id": "Tag11",
- "desc": "操作模式",
- "quality": "0",
- "value": "1.00000",
- "time": "2026-04-10 17:36:36"
- },
- {
- "id": "Tag14",
- "desc": "当前主轴倍率",
- "quality": "0",
- "value": "100.00000",
- "time": "2026-04-10 17:36:36"
- },
- {
- "id": "Tag17",
- "desc": "主轴设定速度",
- "quality": "0",
- "value": "300.00000",
- "time": "2026-04-10 17:36:36"
- },
- {
- "id": "Tag18",
- "desc": "进给设定速度",
- "quality": "0",
- "value": "0.00000",
- "time": "2026-04-10 17:36:36"
- },
- {
- "id": "Tag19",
- "desc": "主轴实际速度",
- "quality": "0",
- "value": "0.00000",
- "time": "2026-04-10 17:36:36"
- },
- {
- "id": "Tag20",
- "desc": "进给实际转速",
- "quality": "0",
- "value": "0.00000",
- "time": "2026-04-10 17:36:37"
- },
- {
- "id": "Tag21",
- "desc": "主轴负载",
- "quality": "0",
- "value": "0.00000",
- "time": "2026-04-10 17:36:37"
- },
- {
- "id": "Tag22",
- "desc": "开机时间",
- "quality": "0",
- "value": "23558160.00000",
- "time": "2026-04-10 17:36:37"
- },
- {
- "id": "Tag23",
- "desc": "运行时间",
- "quality": "0",
- "value": "18224.00000",
- "time": "2026-04-10 17:36:37"
- },
- {
- "id": "Tag24",
- "desc": "切削时间",
- "quality": "0",
- "value": "6848959.00000",
- "time": "2026-04-10 17:36:37"
- },
- {
- "id": "Tag25",
- "desc": "循环时间",
- "quality": "0",
- "value": "699.00000",
- "time": "2026-04-10 17:36:38"
- },
- {
- "id": "Tag26",
- "desc": "加工状态",
- "quality": "0",
- "value": "G01",
- "time": "2026-04-10 17:36:38"
- }
- ]
- },
- {
- "device": "fanake_1.9",
- "desc": "西-1.9",
- "tags": [
- {
- "id": "_io_status",
- "desc": "设备状态",
- "quality": "0",
- "value": "1.00000",
- "time": "2026-04-10 17:36:38"
- },
- {
- "id": "Tag2",
- "desc": "当前轴数",
- "quality": "0",
- "value": "4.00000",
- "time": "2026-04-10 17:36:34"
- },
- {
- "id": "Tag5",
- "desc": "执行的NC主程序名",
- "quality": "0",
- "value": "O1",
- "time": "2026-04-10 17:36:35"
- },
- {
- "id": "Tag6",
- "desc": "执行的NC主程序号",
- "quality": "0",
- "value": "N20",
- "time": "2026-04-10 17:36:35"
- },
- {
- "id": "Tag7",
- "desc": "当前加工程序内容",
- "quality": "0",
- "value": "G99 G83 Z-43.000 Q3.000 R3.000 F60. \nG80 \nG00 Z",
- "time": "2026-04-10 17:36:35"
- },
- {
- "id": "Tag8",
- "desc": "当前加工零件数",
- "quality": "0",
- "value": "62.00000",
- "time": "2026-04-10 17:36:35"
- },
- {
- "id": "Tag9",
- "desc": "运行状态",
- "quality": "0",
- "value": "3.00000",
- "time": "2026-04-10 17:36:36"
- },
- {
- "id": "Tag11",
- "desc": "操作模式",
- "quality": "0",
- "value": "10.00000",
- "time": "2026-04-10 17:36:36"
- },
- {
- "id": "Tag14",
- "desc": "当前主轴倍率",
- "quality": "0",
- "value": "100.00000",
- "time": "2026-04-10 17:36:36"
- },
- {
- "id": "Tag17",
- "desc": "主轴设定速度",
- "quality": "0",
- "value": "450.00000",
- "time": "2026-04-10 17:36:36"
- },
- {
- "id": "Tag18",
- "desc": "进给设定速度",
- "quality": "0",
- "value": "60.00000",
- "time": "2026-04-10 17:36:36"
- },
- {
- "id": "Tag19",
- "desc": "主轴实际速度",
- "quality": "0",
- "value": "450.00000",
- "time": "2026-04-10 17:36:36"
- },
- {
- "id": "Tag20",
- "desc": "进给实际转速",
- "quality": "0",
- "value": "60.00000",
- "time": "2026-04-10 17:36:37"
- },
- {
- "id": "Tag21",
- "desc": "主轴负载",
- "quality": "0",
- "value": "25.00000",
- "time": "2026-04-10 17:36:37"
- },
- {
- "id": "Tag22",
- "desc": "开机时间",
- "quality": "0",
- "value": "23784960.00000",
- "time": "2026-04-10 17:36:37"
- },
- {
- "id": "Tag23",
- "desc": "运行时间",
- "quality": "0",
- "value": "24253.00000",
- "time": "2026-04-10 17:36:37"
- },
- {
- "id": "Tag24",
- "desc": "切削时间",
- "quality": "0",
- "value": "8009398.00000",
- "time": "2026-04-10 17:36:38"
- },
- {
- "id": "Tag25",
- "desc": "循环时间",
- "quality": "0",
- "value": "82.00000",
- "time": "2026-04-10 17:36:38"
- },
- {
- "id": "Tag26",
- "desc": "加工状态",
- "quality": "0",
- "value": "G01",
- "time": "2026-04-10 17:36:38"
- }
- ]
- }
-]
\ No newline at end of file
+[{"device":"fanake_1.8","desc":"-1.8","tags":[{"id":"_io_status","desc":"豸״̬","quality":"0","value":"1.00000","time":"2026-05-06 15:07:14"},{"id":"Tag5","desc":"ִеNC","quality":"0","value":"O1","time":"2026-05-06 15:05:51"},{"id":"Tag6","desc":"ִеNC","quality":"0","value":"N20","time":"2026-05-06 15:06:19"},{"id":"Tag7","desc":"ǰӹ","quality":"0","value":"X38.000 \nY-17.750 \nG80 \nG00 Z10.000 \nG00 G90 G5","time":"2026-05-06 15:06:46"},{"id":"Tag8","desc":"ǰӹ","quality":"0","value":"63.00000","time":"2026-05-06 15:07:14"},{"id":"Tag9","desc":"״̬","quality":"0","value":"3.00000","time":"2026-05-06 15:04:00"},{"id":"Tag11","desc":"ģʽ","quality":"0","value":"10.00000","time":"2026-05-06 15:04:00"},{"id":"Tag22","desc":"ʱ","quality":"0","value":"24523080.00000","time":"2026-05-06 15:04:27"},{"id":"Tag23","desc":"ʱ","quality":"0","value":"15700.00000","time":"2026-05-06 15:04:55"},{"id":"Tag1","desc":"ӹ","quality":"0","value":"16101.00000","time":"2026-05-06 15:05:24"},{"id":"Tag5","desc":"ִеNC","quality":"0","value":"O1","time":"2026-05-06 15:05:51"},{"id":"Tag6","desc":"ִеNC","quality":"0","value":"N20","time":"2026-05-06 15:06:19"},{"id":"Tag7","desc":"ǰӹ","quality":"0","value":"X38.000 \nY-17.750 \nG80 \nG00 Z10.000 \nG00 G90 G5","time":"2026-05-06 15:06:46"},{"id":"Tag8","desc":"ǰӹ","quality":"0","value":"63.00000","time":"2026-05-06 15:07:14"},{"id":"Tag9","desc":"״̬","quality":"0","value":"3.00000","time":"2026-05-06 15:04:00"},{"id":"Tag11","desc":"ģʽ","quality":"0","value":"10.00000","time":"2026-05-06 15:04:00"},{"id":"Tag22","desc":"ʱ","quality":"0","value":"24523080.00000","time":"2026-05-06 15:04:27"},{"id":"Tag23","desc":"ʱ","quality":"0","value":"15700.00000","time":"2026-05-06 15:04:55"},{"id":"Tag1","desc":"ӹ","quality":"0","value":"16101.00000","time":"2026-05-06 15:05:24"}]},{"device":"fanake_1.2","desc":"-1.2","tags":[{"id":"Tag5","desc":"ִеNC","quality":"0","value":"O504","time":"2026-05-06 15:06:18"},{"id":"Tag6","desc":"ִеNC","quality":"0","value":"N20","time":"2026-05-06 15:06:46"},{"id":"Tag7","desc":"ǰӹ","quality":"0","value":"G02 X-162.715 Y31.284 I6.830 J0.000 \nG03 X-161.","time":"2026-05-06 15:07:13"},{"id":"Tag8","desc":"ǰӹ","quality":"0","value":"14.00000","time":"2026-05-06 15:03:59"},{"id":"Tag9","desc":"״̬","quality":"0","value":"3.00000","time":"2026-05-06 15:04:27"},{"id":"Tag11","desc":"ģʽ","quality":"0","value":"10.00000","time":"2026-05-06 15:04:27"},{"id":"Tag22","desc":"ʱ","quality":"0","value":"44884260.00000","time":"2026-05-06 15:04:54"},{"id":"Tag23","desc":"ʱ","quality":"0","value":"20043.00000","time":"2026-05-06 15:05:23"},{"id":"Tag1","desc":"ӹ","quality":"0","value":"45751.00000","time":"2026-05-06 15:05:51"}]},{"device":"fanake_1.3","desc":"-1.3","tags":[{"id":"Tag5","desc":"ִеNC","quality":"0","value":"O1","time":"2026-05-06 15:06:18"},{"id":"Tag6","desc":"ִеNC","quality":"0","value":"N0","time":"2026-05-06 15:06:46"},{"id":"Tag7","desc":"ǰӹ","quality":"0","value":"G43 Z93.300 H1 \nM8 \nZ5.300 \nG01 Z2.300 F400. \nY","time":"2026-05-06 15:07:13"},{"id":"Tag8","desc":"ǰӹ","quality":"0","value":"53.00000","time":"2026-05-06 15:03:59"},{"id":"Tag9","desc":"״̬","quality":"0","value":"3.00000","time":"2026-05-06 15:04:27"},{"id":"Tag11","desc":"ģʽ","quality":"0","value":"10.00000","time":"2026-05-06 15:04:27"},{"id":"Tag22","desc":"ʱ","quality":"0","value":"45177540.00000","time":"2026-05-06 15:04:55"},{"id":"Tag23","desc":"ʱ","quality":"0","value":"3403.00000","time":"2026-05-06 15:05:23"},{"id":"Tag1","desc":"ӹ","quality":"0","value":"48951.00000","time":"2026-05-06 15:05:51"}]},{"device":"fanake_1.4","desc":"-1.4","tags":[{"id":"Tag5","desc":"ִеNC","quality":"0","value":"O1","time":"2026-05-06 15:06:18"},{"id":"Tag6","desc":"ִеNC","quality":"0","value":"N20","time":"2026-05-06 15:06:46"},{"id":"Tag7","desc":"ǰӹ","quality":"0","value":"G02 X-57.510 Y34.310 I3.420 J0.000 \nG01 X-59.01","time":"2026-05-06 15:07:14"},{"id":"Tag8","desc":"ǰӹ","quality":"0","value":"9.00000","time":"2026-05-06 15:03:59"},{"id":"Tag9","desc":"״̬","quality":"0","value":"3.00000","time":"2026-05-06 15:04:27"},{"id":"Tag11","desc":"ģʽ","quality":"0","value":"10.00000","time":"2026-05-06 15:04:27"},{"id":"Tag22","desc":"ʱ","quality":"0","value":"45858120.00000","time":"2026-05-06 15:04:55"},{"id":"Tag23","desc":"ʱ","quality":"0","value":"20721.00000","time":"2026-05-06 15:05:23"},{"id":"Tag1","desc":"ӹ","quality":"0","value":"40504.00000","time":"2026-05-06 15:05:51"}]},{"device":"fanake_1.5","desc":"-1.5","tags":[{"id":"Tag5","desc":"ִеNC","quality":"0","value":"O9001","time":"2026-05-06 15:06:18"},{"id":"Tag6","desc":"ִеNC","quality":"0","value":"N20","time":"2026-05-06 15:06:46"},{"id":"Tag7","desc":"ǰӹ","quality":"0","value":"G02 X-3.853 Y13.826 I11.632 J-10.432 \nX11.301 Y","time":"2026-05-06 15:07:14"},{"id":"Tag8","desc":"ǰӹ","quality":"0","value":"21.00000","time":"2026-05-06 15:03:59"},{"id":"Tag9","desc":"״̬","quality":"0","value":"3.00000","time":"2026-05-06 15:04:27"},{"id":"Tag11","desc":"ģʽ","quality":"0","value":"10.00000","time":"2026-05-06 15:04:27"},{"id":"Tag22","desc":"ʱ","quality":"0","value":"41894640.00000","time":"2026-05-06 15:04:55"},{"id":"Tag23","desc":"ʱ","quality":"0","value":"19314.00000","time":"2026-05-06 15:05:23"},{"id":"Tag1","desc":"ӹ","quality":"0","value":"43904.00000","time":"2026-05-06 15:05:51"}]},{"device":"fanake_1.6","desc":"-1.6","tags":[{"id":"Tag5","desc":"ִеNC","quality":"0","value":"O9001","time":"2026-05-06 15:05:51"},{"id":"Tag6","desc":"ִеNC","quality":"0","value":"N20","time":"2026-05-06 15:06:19"},{"id":"Tag7","desc":"ǰӹ","quality":"0","value":"<1370.NC>\nG40G49G80\n( NAME: Administrator )\n( M","time":"2026-05-06 15:06:46"},{"id":"Tag8","desc":"ǰӹ","quality":"0","value":"5.00000","time":"2026-05-06 15:07:14"},{"id":"Tag9","desc":"״̬","quality":"0","value":"1.00000","time":"2026-05-06 15:04:00"},{"id":"Tag11","desc":"ģʽ","quality":"0","value":"4.00000","time":"2026-05-06 15:04:00"},{"id":"Tag22","desc":"ʱ","quality":"0","value":"26481840.00000","time":"2026-05-06 15:04:27"},{"id":"Tag23","desc":"ʱ","quality":"0","value":"16611.00000","time":"2026-05-06 15:04:55"},{"id":"Tag1","desc":"ӹ","quality":"0","value":"12225.00000","time":"2026-05-06 15:05:23"}]},{"device":"fanake_1.7","desc":"-1.7","tags":[{"id":"Tag5","desc":"ִеNC","quality":"0","value":"O1","time":"2026-05-06 15:05:51"},{"id":"Tag6","desc":"ִеNC","quality":"0","value":"N20","time":"2026-05-06 15:06:19"},{"id":"Tag7","desc":"ǰӹ","quality":"0","value":"X-7.450 \nX-5.850 \nZ6.900 \nG00 Z42.000 \nY7.000 \n","time":"2026-05-06 15:06:46"},{"id":"Tag8","desc":"ǰӹ","quality":"0","value":"12.00000","time":"2026-05-06 15:07:14"},{"id":"Tag9","desc":"״̬","quality":"0","value":"3.00000","time":"2026-05-06 15:04:00"},{"id":"Tag11","desc":"ģʽ","quality":"0","value":"10.00000","time":"2026-05-06 15:04:00"},{"id":"Tag22","desc":"ʱ","quality":"0","value":"29563620.00000","time":"2026-05-06 15:04:27"},{"id":"Tag23","desc":"ʱ","quality":"0","value":"14635.00000","time":"2026-05-06 15:04:55"},{"id":"Tag1","desc":"ӹ","quality":"0","value":"18112.00000","time":"2026-05-06 15:05:23"}]},{"device":"fanake_1.9","desc":"-1.9","tags":[{"id":"Tag5","desc":"ִеNC","quality":"0","value":"O1","time":"2026-05-06 15:05:51"},{"id":"Tag6","desc":"ִеNC","quality":"0","value":"N20","time":"2026-05-06 15:06:19"},{"id":"Tag7","desc":"ǰӹ","quality":"0","value":"M1 \nG90A90.\nX-105.Y-48.303\nG43Z41.738H01\nM10\nZ2","time":"2026-05-06 15:06:47"},{"id":"Tag8","desc":"ǰӹ","quality":"0","value":"18.00000","time":"2026-05-06 15:07:14"},{"id":"Tag9","desc":"״̬","quality":"0","value":"0.00000","time":"2026-05-06 15:04:00"},{"id":"Tag11","desc":"ģʽ","quality":"0","value":"5.00000","time":"2026-05-06 15:04:00"},{"id":"Tag22","desc":"ʱ","quality":"0","value":"24744120.00000","time":"2026-05-06 15:04:28"},{"id":"Tag23","desc":"ʱ","quality":"0","value":"1121.00000","time":"2026-05-06 15:04:55"},{"id":"Tag1","desc":"ӹ","quality":"0","value":"16472.00000","time":"2026-05-06 15:05:24"}]},{"device":"fanake_1.10","desc":"-1.10","tags":[{"id":"Tag5","desc":"ִеNC","quality":"0","value":"O88","time":"2026-05-06 15:05:51"},{"id":"Tag6","desc":"ִеNC","quality":"0","value":"N380","time":"2026-05-06 15:06:19"},{"id":"Tag7","desc":"ǰӹ","quality":"0","value":"G01 X-115.000 \nG02 X-130.100 Y-127.500 I0.000 J","time":"2026-05-06 15:06:47"},{"id":"Tag8","desc":"ǰӹ","quality":"0","value":"1789.00000","time":"2026-05-06 15:07:14"},{"id":"Tag9","desc":"״̬","quality":"0","value":"3.00000","time":"2026-05-06 15:04:00"},{"id":"Tag11","desc":"ģʽ","quality":"0","value":"10.00000","time":"2026-05-06 15:04:00"},{"id":"Tag22","desc":"ʱ","quality":"0","value":"83095080.00000","time":"2026-05-06 15:04:28"},{"id":"Tag23","desc":"ʱ","quality":"0","value":"953670.00000","time":"2026-05-06 15:04:56"},{"id":"Tag1","desc":"ӹ","quality":"0","value":"61675.00000","time":"2026-05-06 15:05:24"}]},{"device":"fanake_1.11","desc":"-1.11","tags":[{"id":"Tag5","desc":"ִеNC","quality":"0","value":"","time":"2026-05-06 15:05:52"},{"id":"Tag6","desc":"ִеNC","quality":"0","value":"N170","time":"2026-05-06 15:06:19"},{"id":"Tag7","desc":"ǰӹ","quality":"0","value":"N178 Y-132.000 F1000. \nN180 X-131.500 \nN182 Y35","time":"2026-05-06 15:06:47"},{"id":"Tag8","desc":"ǰӹ","quality":"0","value":"1153.00000","time":"2026-05-06 15:07:14"},{"id":"Tag9","desc":"״̬","quality":"0","value":"3.00000","time":"2026-05-06 15:04:00"},{"id":"Tag11","desc":"ģʽ","quality":"0","value":"10.00000","time":"2026-05-06 15:04:00"},{"id":"Tag22","desc":"ʱ","quality":"0","value":"81371460.00000","time":"2026-05-06 15:04:28"},{"id":"Tag23","desc":"ʱ","quality":"0","value":"1784670.00000","time":"2026-05-06 15:04:56"},{"id":"Tag1","desc":"ӹ","quality":"0","value":"51653.00000","time":"2026-05-06 15:05:24"}]},{"device":"fanake_1.12","desc":"-1.12","tags":[{"id":"Tag5","desc":"ִеNC","quality":"0","value":"O2","time":"2026-05-06 15:05:52"},{"id":"Tag6","desc":"ִеNC","quality":"0","value":"N0","time":"2026-05-06 15:06:19"},{"id":"Tag7","desc":"ǰӹ","quality":"0","value":".189%","time":"2026-05-06 15:06:47"},{"id":"Tag8","desc":"ǰӹ","quality":"0","value":"1162.00000","time":"2026-05-06 15:07:15"},{"id":"Tag9","desc":"״̬","quality":"0","value":"0.00000","time":"2026-05-06 15:04:00"},{"id":"Tag11","desc":"ģʽ","quality":"0","value":"10.00000","time":"2026-05-06 15:04:00"},{"id":"Tag22","desc":"ʱ","quality":"0","value":"57159300.00000","time":"2026-05-06 15:04:28"},{"id":"Tag23","desc":"ʱ","quality":"0","value":"2611091.00000","time":"2026-05-06 15:04:56"},{"id":"Tag1","desc":"ӹ","quality":"0","value":"52058.00000","time":"2026-05-06 15:05:24"}]},{"device":"fanake_1.13","desc":"-1.13","tags":[{"id":"Tag5","desc":"ִеNC","quality":"0","value":"O1","time":"2026-05-06 15:05:52"},{"id":"Tag6","desc":"ִеNC","quality":"0","value":"N20","time":"2026-05-06 15:06:19"},{"id":"Tag7","desc":"ǰӹ","quality":"0","value":"G91 G28 Y0.000 \nM30\n%","time":"2026-05-06 15:06:47"},{"id":"Tag8","desc":"ǰӹ","quality":"0","value":"150.00000","time":"2026-05-06 15:07:15"},{"id":"Tag9","desc":"״̬","quality":"0","value":"0.00000","time":"2026-05-06 15:04:00"},{"id":"Tag11","desc":"ģʽ","quality":"0","value":"10.00000","time":"2026-05-06 15:04:00"},{"id":"Tag22","desc":"ʱ","quality":"0","value":"60468480.00000","time":"2026-05-06 15:04:28"},{"id":"Tag23","desc":"ʱ","quality":"0","value":"52678.00000","time":"2026-05-06 15:04:56"},{"id":"Tag1","desc":"ӹ","quality":"0","value":"58791.00000","time":"2026-05-06 15:05:24"}]},{"device":"fanake_1.14","desc":"-1.14","tags":[{"id":"Tag5","desc":"ִеNC","quality":"0","value":"","time":"2026-05-06 15:05:52"},{"id":"Tag6","desc":"ִеNC","quality":"0","value":"N0","time":"2026-05-06 15:06:20"},{"id":"Tag7","desc":"ǰӹ","quality":"0","value":"","time":"2026-05-06 15:06:47"},{"id":"Tag8","desc":"ǰӹ","quality":"0","value":"173.00000","time":"2026-05-06 15:07:15"},{"id":"Tag9","desc":"״̬","quality":"0","value":"0.00000","time":"2026-05-06 15:04:00"},{"id":"Tag11","desc":"ģʽ","quality":"0","value":"10.00000","time":"2026-05-06 15:04:00"},{"id":"Tag22","desc":"ʱ","quality":"0","value":"63446160.00000","time":"2026-05-06 15:04:28"},{"id":"Tag23","desc":"ʱ","quality":"0","value":"55461.00000","time":"2026-05-06 15:04:56"},{"id":"Tag1","desc":"ӹ","quality":"0","value":"69633.00000","time":"2026-05-06 15:05:24"}]},{"device":"fanake_1.15","desc":"-1.15","tags":[{"id":"Tag5","desc":"ִеNC","quality":"0","value":"O506","time":"2026-05-06 15:05:52"},{"id":"Tag6","desc":"ִеNC","quality":"0","value":"N20","time":"2026-05-06 15:06:20"},{"id":"Tag7","desc":"ǰӹ","quality":"0","value":"G01 X20.775 \nY-8.284 \nX4.800 \nY8.284 \nX36.750 \n","time":"2026-05-06 15:06:47"},{"id":"Tag8","desc":"ǰӹ","quality":"0","value":"4.00000","time":"2026-05-06 15:07:15"},{"id":"Tag9","desc":"״̬","quality":"0","value":"3.00000","time":"2026-05-06 15:04:01"},{"id":"Tag11","desc":"ģʽ","quality":"0","value":"10.00000","time":"2026-05-06 15:04:01"},{"id":"Tag22","desc":"ʱ","quality":"0","value":"54781260.00000","time":"2026-05-06 15:04:28"},{"id":"Tag23","desc":"ʱ","quality":"0","value":"6403.00000","time":"2026-05-06 15:04:56"},{"id":"Tag1","desc":"ӹ","quality":"0","value":"32442.00000","time":"2026-05-06 15:05:24"}]},{"device":"fanake_1.16","desc":"-1.16","tags":[{"id":"Tag5","desc":"ִеNC","quality":"0","value":"O1","time":"2026-05-06 15:05:52"},{"id":"Tag6","desc":"ִеNC","quality":"0","value":"N20","time":"2026-05-06 15:06:20"},{"id":"Tag7","desc":"ǰӹ","quality":"0","value":"G02 X-60.570 Y47.947 I-0.989 J4.973 \nG01 X-60.6","time":"2026-05-06 15:06:47"},{"id":"Tag8","desc":"ǰӹ","quality":"0","value":"103.00000","time":"2026-05-06 15:07:15"},{"id":"Tag9","desc":"״̬","quality":"0","value":"3.00000","time":"2026-05-06 15:04:01"},{"id":"Tag11","desc":"ģʽ","quality":"0","value":"10.00000","time":"2026-05-06 15:04:01"},{"id":"Tag22","desc":"ʱ","quality":"0","value":"56446080.00000","time":"2026-05-06 15:04:28"},{"id":"Tag23","desc":"ʱ","quality":"0","value":"71194.00000","time":"2026-05-06 15:04:56"},{"id":"Tag1","desc":"ӹ","quality":"0","value":"43958.00000","time":"2026-05-06 15:05:24"}]},{"device":"fanake_1.17","desc":"-1.17","tags":[{"id":"Tag5","desc":"ִеNC","quality":"0","value":"O1","time":"2026-05-06 15:05:52"},{"id":"Tag6","desc":"ִеNC","quality":"0","value":"N20","time":"2026-05-06 15:06:20"},{"id":"Tag7","desc":"ǰӹ","quality":"0","value":"Y-12.865 \nY-12.269 \nY-11.673 \nY-11.077 \nY-10.48","time":"2026-05-06 15:06:47"},{"id":"Tag8","desc":"ǰӹ","quality":"0","value":"193.00000","time":"2026-05-06 15:07:15"},{"id":"Tag9","desc":"״̬","quality":"0","value":"3.00000","time":"2026-05-06 15:04:01"},{"id":"Tag11","desc":"ģʽ","quality":"0","value":"10.00000","time":"2026-05-06 15:04:01"},{"id":"Tag22","desc":"ʱ","quality":"0","value":"53566620.00000","time":"2026-05-06 15:04:29"},{"id":"Tag23","desc":"ʱ","quality":"0","value":"78701.00000","time":"2026-05-06 15:04:57"},{"id":"Tag1","desc":"ӹ","quality":"0","value":"25609.00000","time":"2026-05-06 15:05:25"}]},{"device":"fanake_1.18","desc":"-1.18","tags":[{"id":"Tag5","desc":"ִеNC","quality":"0","value":"O2","time":"2026-05-06 15:05:52"},{"id":"Tag6","desc":"ִеNC","quality":"0","value":"N20","time":"2026-05-06 15:06:20"},{"id":"Tag7","desc":"ǰӹ","quality":"0","value":"X-187.885 Y-28.629 \nG02 X-192.115 I-2.115 J3.66","time":"2026-05-06 15:06:48"},{"id":"Tag8","desc":"ǰӹ","quality":"0","value":"0.00000","time":"2026-05-06 15:07:15"},{"id":"Tag9","desc":"״̬","quality":"0","value":"3.00000","time":"2026-05-06 15:04:01"},{"id":"Tag11","desc":"ģʽ","quality":"0","value":"10.00000","time":"2026-05-06 15:04:01"},{"id":"Tag22","desc":"ʱ","quality":"0","value":"86160480.00000","time":"2026-05-06 15:04:29"},{"id":"Tag23","desc":"ʱ","quality":"0","value":"0.00000","time":"2026-05-06 15:04:57"},{"id":"Tag1","desc":"ӹ","quality":"0","value":"113856.00000","time":"2026-05-06 15:05:25"}]},{"device":"fanake_1.19","desc":"-1.19","tags":[{"id":"Tag5","desc":"ִеNC","quality":"0","value":"O1","time":"2026-05-06 15:05:53"},{"id":"Tag6","desc":"ִеNC","quality":"0","value":"N9","time":"2026-05-06 15:06:20"},{"id":"Tag7","desc":"ǰӹ","quality":"0","value":"Z-4.500 \nG00 Z33.000 \nG90 X-90.641 Y-28.053 \nZ-","time":"2026-05-06 15:06:48"},{"id":"Tag8","desc":"ǰӹ","quality":"0","value":"0.00000","time":"2026-05-06 15:07:15"},{"id":"Tag9","desc":"״̬","quality":"0","value":"3.00000","time":"2026-05-06 15:04:01"},{"id":"Tag11","desc":"ģʽ","quality":"0","value":"10.00000","time":"2026-05-06 15:04:01"},{"id":"Tag22","desc":"ʱ","quality":"0","value":"136464540.00000","time":"2026-05-06 15:04:29"},{"id":"Tag23","desc":"ʱ","quality":"0","value":"68.00000","time":"2026-05-06 15:04:57"},{"id":"Tag1","desc":"ӹ","quality":"0","value":"144029.00000","time":"2026-05-06 15:05:25"}]},{"device":"fanake_1.20","desc":"-1.20","tags":[{"id":"Tag5","desc":"ִеNC","quality":"0","value":"O1","time":"2026-05-06 15:05:53"},{"id":"Tag6","desc":"ִеNC","quality":"0","value":"N9","time":"2026-05-06 15:06:20"},{"id":"Tag7","desc":"ǰӹ","quality":"0","value":"G01 X-2.200 Y14.549 \nX-4.200 Y18.013 \nX-2.100 Y","time":"2026-05-06 15:06:48"},{"id":"Tag8","desc":"ǰӹ","quality":"0","value":"0.00000","time":"2026-05-06 15:07:15"},{"id":"Tag9","desc":"״̬","quality":"0","value":"0.00000","time":"2026-05-06 15:04:01"},{"id":"Tag11","desc":"ģʽ","quality":"0","value":"10.00000","time":"2026-05-06 15:04:01"},{"id":"Tag22","desc":"ʱ","quality":"0","value":"141877620.00000","time":"2026-05-06 15:04:29"},{"id":"Tag23","desc":"ʱ","quality":"0","value":"0.00000","time":"2026-05-06 15:04:57"},{"id":"Tag1","desc":"ӹ","quality":"0","value":"139788.00000","time":"2026-05-06 15:05:25"}]},{"device":"fanake_1.21","desc":"-1.21","tags":[{"id":"Tag5","desc":"ִеNC","quality":"0","value":"O1","time":"2026-05-06 15:05:53"},{"id":"Tag6","desc":"ִеNC","quality":"0","value":"N9","time":"2026-05-06 15:06:20"},{"id":"Tag7","desc":"ǰӹ","quality":"0","value":"G02 X-114.170 I2.830 J-4.902 \nG01 X-108.900 Y27","time":"2026-05-06 15:06:48"},{"id":"Tag8","desc":"ǰӹ","quality":"0","value":"0.00000","time":"2026-05-06 15:07:16"},{"id":"Tag9","desc":"״̬","quality":"0","value":"3.00000","time":"2026-05-06 15:04:01"},{"id":"Tag11","desc":"ģʽ","quality":"0","value":"10.00000","time":"2026-05-06 15:04:01"},{"id":"Tag22","desc":"ʱ","quality":"0","value":"140563920.00000","time":"2026-05-06 15:04:29"},{"id":"Tag23","desc":"ʱ","quality":"0","value":"639.00000","time":"2026-05-06 15:04:57"},{"id":"Tag1","desc":"ӹ","quality":"0","value":"127265.00000","time":"2026-05-06 15:05:25"}]},{"device":"fanake_1.22","desc":"-1.22","tags":[{"id":"Tag5","desc":"ִеNC","quality":"0","value":"1027","time":"2026-05-06 15:05:53"},{"id":"Tag6","desc":"ִеNC","quality":"0","value":"N9","time":"2026-05-06 15:06:20"},{"id":"Tag7","desc":"ǰӹ","quality":"0","value":"","time":"2026-05-06 15:06:48"},{"id":"Tag8","desc":"ǰӹ","quality":"0","value":"24.00000","time":"2026-05-06 15:07:16"},{"id":"Tag9","desc":"״̬","quality":"0","value":"0.00000","time":"2026-05-06 15:04:01"},{"id":"Tag11","desc":"ģʽ","quality":"0","value":"10.00000","time":"2026-05-06 15:04:01"},{"id":"Tag22","desc":"ʱ","quality":"0","value":"130547880.00000","time":"2026-05-06 15:04:29"},{"id":"Tag23","desc":"ʱ","quality":"0","value":"7936.00000","time":"2026-05-06 15:04:57"},{"id":"Tag1","desc":"ӹ","quality":"0","value":"161742.00000","time":"2026-05-06 15:05:25"}]},{"device":"fanake_1.23","desc":"-1.23","tags":[{"id":"Tag5","desc":"ִеNC","quality":"0","value":"O2","time":"2026-05-06 15:05:53"},{"id":"Tag6","desc":"ִеNC","quality":"0","value":"N0","time":"2026-05-06 15:06:21"},{"id":"Tag7","desc":"ǰӹ","quality":"0","value":"G01 X-235. M8 F39. \nG00 Z200.000 M9 \nM5 \nG28 Y0","time":"2026-05-06 15:06:48"},{"id":"Tag8","desc":"ǰӹ","quality":"0","value":"38.00000","time":"2026-05-06 15:07:16"},{"id":"Tag9","desc":"״̬","quality":"0","value":"0.00000","time":"2026-05-06 15:04:02"},{"id":"Tag11","desc":"ģʽ","quality":"0","value":"1.00000","time":"2026-05-06 15:04:02"},{"id":"Tag22","desc":"ʱ","quality":"0","value":"124760580.00000","time":"2026-05-06 15:04:29"},{"id":"Tag23","desc":"ʱ","quality":"0","value":"14200.00000","time":"2026-05-06 15:04:57"},{"id":"Tag1","desc":"ӹ","quality":"0","value":"106705.00000","time":"2026-05-06 15:05:25"}]},{"device":"fanake_1.24","desc":"-1.24","tags":[{"id":"Tag5","desc":"ִеNC","quality":"0","value":"O1","time":"2026-05-06 15:05:53"},{"id":"Tag6","desc":"ִеNC","quality":"0","value":"N1","time":"2026-05-06 15:06:21"},{"id":"Tag7","desc":"ǰӹ","quality":"0","value":"X-60.000 \nY-67.700 F500. \nG00 Z155.000 \nM9 \nM5 ","time":"2026-05-06 15:06:48"},{"id":"Tag8","desc":"ǰӹ","quality":"0","value":"15.00000","time":"2026-05-06 15:07:16"},{"id":"Tag9","desc":"״̬","quality":"0","value":"3.00000","time":"2026-05-06 15:04:02"},{"id":"Tag11","desc":"ģʽ","quality":"0","value":"10.00000","time":"2026-05-06 15:04:02"},{"id":"Tag22","desc":"ʱ","quality":"0","value":"117256500.00000","time":"2026-05-06 15:04:29"},{"id":"Tag23","desc":"ʱ","quality":"0","value":"12020.00000","time":"2026-05-06 15:04:58"},{"id":"Tag1","desc":"ӹ","quality":"0","value":"106460.00000","time":"2026-05-06 15:05:25"}]},{"device":"fanake_1.25","desc":"-1.25","tags":[{"id":"Tag5","desc":"ִеNC","quality":"0","value":"O1","time":"2026-05-06 15:05:53"},{"id":"Tag6","desc":"ִеNC","quality":"0","value":"N20","time":"2026-05-06 15:06:21"},{"id":"Tag7","desc":"ǰӹ","quality":"0","value":"G99 G83 Z-12.980 Q1.000 R9.020 F20. \nG80\nG0Z56.","time":"2026-05-06 15:06:48"},{"id":"Tag8","desc":"ǰӹ","quality":"0","value":"13.00000","time":"2026-05-06 15:07:16"},{"id":"Tag9","desc":"״̬","quality":"0","value":"3.00000","time":"2026-05-06 15:04:02"},{"id":"Tag11","desc":"ģʽ","quality":"0","value":"10.00000","time":"2026-05-06 15:04:02"},{"id":"Tag22","desc":"ʱ","quality":"0","value":"107630700.00000","time":"2026-05-06 15:04:29"},{"id":"Tag23","desc":"ʱ","quality":"0","value":"18953.00000","time":"2026-05-06 15:04:58"},{"id":"Tag1","desc":"ӹ","quality":"0","value":"88768.00000","time":"2026-05-06 15:05:26"}]},{"device":"fanake_1.26","desc":"-1.26","tags":[{"id":"Tag5","desc":"ִеNC","quality":"1","value":"","time":"1970-01-01 08:00:00"},{"id":"Tag6","desc":"ִеNC","quality":"1","value":"","time":"1970-01-01 08:00:00"},{"id":"Tag7","desc":"ǰӹ","quality":"1","value":"","time":"1970-01-01 08:00:00"},{"id":"Tag8","desc":"ǰӹ","quality":"1","value":"0.00000","time":"1970-01-01 08:00:00"},{"id":"Tag9","desc":"״̬","quality":"1","value":"0.00000","time":"1970-01-01 08:00:00"},{"id":"Tag11","desc":"ģʽ","quality":"1","value":"0.00000","time":"1970-01-01 08:00:00"},{"id":"Tag22","desc":"ʱ","quality":"1","value":"0.00000","time":"1970-01-01 08:00:00"},{"id":"Tag23","desc":"ʱ","quality":"1","value":"0.00000","time":"1970-01-01 08:00:00"},{"id":"Tag1","desc":"ӹ","quality":"1","value":"0.00000","time":"1970-01-01 08:00:00"}]},{"device":"fanake_1.27","desc":"-1.27","tags":[{"id":"Tag5","desc":"ִеNC","quality":"1","value":"","time":"1970-01-01 08:00:00"},{"id":"Tag6","desc":"ִеNC","quality":"1","value":"","time":"1970-01-01 08:00:00"},{"id":"Tag7","desc":"ǰӹ","quality":"1","value":"","time":"1970-01-01 08:00:00"},{"id":"Tag8","desc":"ǰӹ","quality":"1","value":"0.00000","time":"1970-01-01 08:00:00"},{"id":"Tag9","desc":"״̬","quality":"1","value":"0.00000","time":"1970-01-01 08:00:00"},{"id":"Tag11","desc":"ģʽ","quality":"1","value":"0.00000","time":"1970-01-01 08:00:00"},{"id":"Tag22","desc":"ʱ","quality":"1","value":"0.00000","time":"1970-01-01 08:00:00"},{"id":"Tag23","desc":"ʱ","quality":"1","value":"0.00000","time":"1970-01-01 08:00:00"},{"id":"Tag1","desc":"ӹ","quality":"1","value":"0.00000","time":"1970-01-01 08:00:00"}]},{"device":"fanake_1.28","desc":"-1.28","tags":[{"id":"Tag5","desc":"ִеNC","quality":"1","value":"","time":"1970-01-01 08:00:00"},{"id":"Tag6","desc":"ִеNC","quality":"1","value":"","time":"1970-01-01 08:00:00"},{"id":"Tag7","desc":"ǰӹ","quality":"1","value":"","time":"1970-01-01 08:00:00"},{"id":"Tag8","desc":"ǰӹ","quality":"1","value":"0.00000","time":"1970-01-01 08:00:00"},{"id":"Tag9","desc":"״̬","quality":"1","value":"0.00000","time":"1970-01-01 08:00:00"},{"id":"Tag11","desc":"ģʽ","quality":"1","value":"0.00000","time":"1970-01-01 08:00:00"},{"id":"Tag22","desc":"ʱ","quality":"1","value":"0.00000","time":"1970-01-01 08:00:00"},{"id":"Tag23","desc":"ʱ","quality":"1","value":"0.00000","time":"1970-01-01 08:00:00"},{"id":"Tag1","desc":"ӹ","quality":"1","value":"0.00000","time":"1970-01-01 08:00:00"}]},{"device":"fanake_1.29","desc":"-1.29","tags":[{"id":"Tag5","desc":"ִеNC","quality":"0","value":"O1","time":"2026-05-06 15:06:18"},{"id":"Tag6","desc":"ִеNC","quality":"0","value":"N9","time":"2026-05-06 15:06:45"},{"id":"Tag7","desc":"ǰӹ","quality":"0","value":"G02 X-17.910 I-1.910 J3.308 \nG01 X-26.800 Y-18.","time":"2026-05-06 15:07:13"},{"id":"Tag8","desc":"ǰӹ","quality":"0","value":"19.00000","time":"2026-05-06 15:03:59"},{"id":"Tag9","desc":"״̬","quality":"0","value":"3.00000","time":"2026-05-06 15:04:26"},{"id":"Tag11","desc":"ģʽ","quality":"0","value":"10.00000","time":"2026-05-06 15:04:26"},{"id":"Tag22","desc":"ʱ","quality":"0","value":"54806160.00000","time":"2026-05-06 15:04:54"},{"id":"Tag23","desc":"ʱ","quality":"0","value":"20654.00000","time":"2026-05-06 15:05:22"},{"id":"Tag1","desc":"ӹ","quality":"0","value":"57603.00000","time":"2026-05-06 15:05:50"}]},{"device":"fanake_1.30","desc":"-1.30","tags":[{"id":"Tag5","desc":"ִеNC","quality":"0","value":"O1","time":"2026-05-06 15:06:18"},{"id":"Tag6","desc":"ִеNC","quality":"0","value":"N9","time":"2026-05-06 15:06:45"},{"id":"Tag7","desc":"ǰӹ","quality":"0","value":"G91 G28 Y0.000 \nM30\n%","time":"2026-05-06 15:07:13"},{"id":"Tag8","desc":"ǰӹ","quality":"0","value":"31.00000","time":"2026-05-06 15:03:59"},{"id":"Tag9","desc":"״̬","quality":"0","value":"3.00000","time":"2026-05-06 15:04:26"},{"id":"Tag11","desc":"ģʽ","quality":"0","value":"10.00000","time":"2026-05-06 15:04:26"},{"id":"Tag22","desc":"ʱ","quality":"0","value":"62122620.00000","time":"2026-05-06 15:04:54"},{"id":"Tag23","desc":"ʱ","quality":"0","value":"17469.00000","time":"2026-05-06 15:05:22"},{"id":"Tag1","desc":"ӹ","quality":"0","value":"62111.00000","time":"2026-05-06 15:05:50"}]},{"device":"fanake_1.31","desc":"-1.31","tags":[{"id":"Tag5","desc":"ִеNC","quality":"0","value":"O1","time":"2026-05-06 15:06:18"},{"id":"Tag6","desc":"ִеNC","quality":"0","value":"N1","time":"2026-05-06 15:06:45"},{"id":"Tag7","desc":"ǰӹ","quality":"0","value":"X0.000 \nX8.000 \nZ1.100 \nG00 Z50.000 \nM9 \nG91G28","time":"2026-05-06 15:07:13"},{"id":"Tag8","desc":"ǰӹ","quality":"0","value":"0.00000","time":"2026-05-06 15:03:59"},{"id":"Tag9","desc":"״̬","quality":"0","value":"3.00000","time":"2026-05-06 15:04:26"},{"id":"Tag11","desc":"ģʽ","quality":"0","value":"10.00000","time":"2026-05-06 15:04:26"},{"id":"Tag22","desc":"ʱ","quality":"0","value":"63428160.00000","time":"2026-05-06 15:04:54"},{"id":"Tag23","desc":"ʱ","quality":"0","value":"1001.00000","time":"2026-05-06 15:05:22"},{"id":"Tag1","desc":"ӹ","quality":"0","value":"85647.00000","time":"2026-05-06 15:05:50"}]},{"device":"fanake_1.32","desc":"-1.32","tags":[{"id":"Tag5","desc":"ִеNC","quality":"0","value":"O1","time":"2026-05-06 15:06:18"},{"id":"Tag6","desc":"ִеNC","quality":"0","value":"N0","time":"2026-05-06 15:06:46"},{"id":"Tag7","desc":"ǰӹ","quality":"0","value":"","time":"2026-05-06 15:07:13"},{"id":"Tag8","desc":"ǰӹ","quality":"0","value":"90.00000","time":"2026-05-06 15:03:59"},{"id":"Tag9","desc":"״̬","quality":"0","value":"0.00000","time":"2026-05-06 15:04:27"},{"id":"Tag11","desc":"ģʽ","quality":"0","value":"5.00000","time":"2026-05-06 15:04:27"},{"id":"Tag22","desc":"ʱ","quality":"0","value":"67187760.00000","time":"2026-05-06 15:04:54"},{"id":"Tag23","desc":"ʱ","quality":"0","value":"23644.00000","time":"2026-05-06 15:05:23"},{"id":"Tag1","desc":"ӹ","quality":"0","value":"86248.00000","time":"2026-05-06 15:05:50"}]},{"device":"fanake_1.33","desc":"-1.33","tags":[{"id":"Tag5","desc":"ִеNC","quality":"0","value":"O1","time":"2026-05-06 15:06:18"},{"id":"Tag6","desc":"ִеNC","quality":"0","value":"N20","time":"2026-05-06 15:06:46"},{"id":"Tag7","desc":"ǰӹ","quality":"0","value":"Y0.000 \nY4.792 \nG02 X-10.400 Y8.429 I4.200 J0.0","time":"2026-05-06 15:07:13"},{"id":"Tag8","desc":"ǰӹ","quality":"0","value":"3.00000","time":"2026-05-06 15:03:59"},{"id":"Tag9","desc":"״̬","quality":"0","value":"0.00000","time":"2026-05-06 15:04:27"},{"id":"Tag11","desc":"ģʽ","quality":"0","value":"10.00000","time":"2026-05-06 15:04:27"},{"id":"Tag22","desc":"ʱ","quality":"0","value":"85447860.00000","time":"2026-05-06 15:04:54"},{"id":"Tag23","desc":"ʱ","quality":"0","value":"577.00000","time":"2026-05-06 15:05:23"},{"id":"Tag1","desc":"ӹ","quality":"0","value":"99421.00000","time":"2026-05-06 15:05:50"}]}]
\ No newline at end of file