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}} - - - - - - - + + + + + + + + + + + + + +
+ 在线 + 离线 + 停用 +
+
+ +
+ +
+ + 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,