From 74b611d6e134df1f2f1a01e4ac061bd4bb4708be Mon Sep 17 00:00:00 2001 From: haoliang <821644@qq.com> Date: Thu, 30 Apr 2026 01:24:44 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=87=E9=9B=86=E5=9C=B0=E5=9D=80=E5=85=B3?= =?UTF-8?q?=E8=81=94=E6=9C=BA=E5=BA=8A=E6=94=B9=E4=B8=BA=E7=A9=BF=E6=A2=AD?= =?UTF-8?q?=E6=A1=86=EF=BC=9A=E5=90=8E=E7=AB=AFDTO=E5=8A=A0MachineIds+SetC?= =?UTF-8?q?ollectAddress=EF=BC=8C=E5=89=8D=E7=AB=AFel-transfer=E6=9B=BF?= =?UTF-8?q?=E6=8D=A2checkbox?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CollectAddressListPage.vue | 153 ++++++++++++++---- .../CollectAddressMachineItem.cs | 3 + .../CreateCollectAddressRequest.cs | 4 + .../UpdateCollectAddressRequest.cs | 4 + src/CncRepository/Impl/MachineRepository.cs | 9 ++ .../Interface/IMachineRepository.cs | 2 + src/CncService/Impl/CollectAddressService.cs | 32 +++- 7 files changed, 170 insertions(+), 37 deletions(-) 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,