diff --git a/frontend/src/views/collect-address/CollectAddressListPage.vue b/frontend/src/views/collect-address/CollectAddressListPage.vue
index af1d448..873bbce 100644
--- a/frontend/src/views/collect-address/CollectAddressListPage.vue
+++ b/frontend/src/views/collect-address/CollectAddressListPage.vue
@@ -21,53 +21,136 @@
-
-
-
-
-
-
-
-
- {{m.machineName}}
-
-
-
-
- 取消保存
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ option.name }}
+ ({{ option.deviceCode }})
+
+
+
+
+ 在线
+ 离线
+ 停用
+
+
+
+
+ 取消保存
+
+
+
diff --git a/src/CncModels/Dto/CollectAddress/CollectAddressMachineItem.cs b/src/CncModels/Dto/CollectAddress/CollectAddressMachineItem.cs
index b0df429..a4aa7d1 100644
--- a/src/CncModels/Dto/CollectAddress/CollectAddressMachineItem.cs
+++ b/src/CncModels/Dto/CollectAddress/CollectAddressMachineItem.cs
@@ -5,6 +5,9 @@ namespace CncModels.Dto.CollectAddress
///
public class CollectAddressMachineItem
{
+ /// 机床ID
+ public int MachineId { get; set; }
+
/// 机床名称
public string MachineName { get; set; }
diff --git a/src/CncModels/Dto/CollectAddress/CreateCollectAddressRequest.cs b/src/CncModels/Dto/CollectAddress/CreateCollectAddressRequest.cs
index 702583f..b9ebad4 100644
--- a/src/CncModels/Dto/CollectAddress/CreateCollectAddressRequest.cs
+++ b/src/CncModels/Dto/CollectAddress/CreateCollectAddressRequest.cs
@@ -1,3 +1,5 @@
+using System.Collections.Generic;
+
namespace CncModels.Dto.CollectAddress
{
///
@@ -9,5 +11,7 @@ namespace CncModels.Dto.CollectAddress
public string Url { get; set; }
public int BrandId { get; set; }
public int CollectInterval { get; set; }
+ /// 关联机床ID列表
+ public List MachineIds { get; set; }
}
}
diff --git a/src/CncModels/Dto/CollectAddress/UpdateCollectAddressRequest.cs b/src/CncModels/Dto/CollectAddress/UpdateCollectAddressRequest.cs
index 9001ed0..294ba1c 100644
--- a/src/CncModels/Dto/CollectAddress/UpdateCollectAddressRequest.cs
+++ b/src/CncModels/Dto/CollectAddress/UpdateCollectAddressRequest.cs
@@ -1,3 +1,5 @@
+using System.Collections.Generic;
+
namespace CncModels.Dto.CollectAddress
{
///
@@ -9,5 +11,7 @@ namespace CncModels.Dto.CollectAddress
public string Url { get; set; }
public int BrandId { get; set; }
public int CollectInterval { get; set; }
+ /// 关联机床ID列表(全量替换)
+ public List MachineIds { get; set; }
}
}
diff --git a/src/CncRepository/Impl/MachineRepository.cs b/src/CncRepository/Impl/MachineRepository.cs
index 1cfa6bc..da6f498 100644
--- a/src/CncRepository/Impl/MachineRepository.cs
+++ b/src/CncRepository/Impl/MachineRepository.cs
@@ -188,5 +188,14 @@ namespace CncRepository.Impl
conn.Execute(sql, param);
}
}
+
+ public void SetCollectAddress(int machineId, int? collectAddressId)
+ {
+ using (var conn = CreateConnection())
+ {
+ conn.Execute("UPDATE cnc_machine SET collect_address_id = @AddressId, updated_at = NOW() WHERE id = @Id",
+ new { Id = machineId, AddressId = collectAddressId });
+ }
+ }
}
}
diff --git a/src/CncRepository/Interface/IMachineRepository.cs b/src/CncRepository/Interface/IMachineRepository.cs
index 6eb86e0..45c43d9 100644
--- a/src/CncRepository/Interface/IMachineRepository.cs
+++ b/src/CncRepository/Interface/IMachineRepository.cs
@@ -22,5 +22,7 @@ namespace CncRepository.Interface
List GetEnabledOnline();
void UpdateOnlineStatus(int id, bool isOnline);
void UpdateLastCollect(int id, Machine entity);
+ /// 设置机床所属的采集地址
+ void SetCollectAddress(int machineId, int? collectAddressId);
}
}
diff --git a/src/CncService/Impl/CollectAddressService.cs b/src/CncService/Impl/CollectAddressService.cs
index ca9d0c2..47d61d7 100644
--- a/src/CncService/Impl/CollectAddressService.cs
+++ b/src/CncService/Impl/CollectAddressService.cs
@@ -73,7 +73,17 @@ namespace CncService.Impl
CreatedAt = DateTime.Now,
UpdatedAt = DateTime.Now
};
- return _collectAddressRepository.Create(entity);
+ var id = _collectAddressRepository.Create(entity);
+
+ // 绑定机床
+ if (request.MachineIds != null)
+ {
+ foreach (var mid in request.MachineIds)
+ {
+ _machineRepository.SetCollectAddress(mid, id);
+ }
+ }
+ return id;
}
public bool Update(int id, UpdateCollectAddressRequest request)
@@ -87,7 +97,24 @@ namespace CncService.Impl
address.BrandId = (request.BrandId != 0) ? request.BrandId : address.BrandId;
address.CollectInterval = (request.CollectInterval != 0) ? request.CollectInterval : address.CollectInterval;
address.UpdatedAt = DateTime.Now;
- return _collectAddressRepository.Update(address);
+ _collectAddressRepository.Update(address);
+
+ // 全量替换机床关联
+ if (request.MachineIds != null)
+ {
+ // 先清除该地址下所有机床的关联
+ var currentMachines = _machineRepository.GetEnabledByAddressId(id);
+ foreach (var m in currentMachines)
+ {
+ _machineRepository.SetCollectAddress(m.Id, null);
+ }
+ // 再绑定新选中的机床
+ foreach (var mid in request.MachineIds)
+ {
+ _machineRepository.SetCollectAddress(mid, id);
+ }
+ }
+ return true;
}
public bool Delete(int id)
@@ -117,6 +144,7 @@ namespace CncService.Impl
}
result.Add(new CollectAddressMachineItem
{
+ MachineId = m.Id,
MachineName = m.Name ?? m.DeviceCode,
DeviceCode = m.DeviceCode,
WorkshopName = workshopName,