From fcd70fd0277fd81221248fb9a5be9f60862b44b6 Mon Sep 17 00:00:00 2001 From: bairubing Date: Mon, 21 Oct 2024 13:34:57 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=98=8E=E5=BC=80=E6=94=BE=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E7=BB=99OA=E6=96=B0=E5=A2=9E=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E3=80=81=E4=BF=AE=E6=94=B9=E9=A1=B9=E7=9B=AE=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Entity/FieldGroupDefault.cs | 47 +++ .../Vistar.Application/Entity/Obj109.cs | 2 + .../Entity/ObjectFieldsGroups.cs | 369 ++++++++++++++++++ .../Dto/OaCreateProjectInput.cs | 92 +++++ .../OaOpenInterface/OaOpenInterfaceService.cs | 152 ++++++++ 5 files changed, 662 insertions(+) create mode 100644 admin.net.pro/Admin.NET/Vistar.Application/Entity/FieldGroupDefault.cs create mode 100644 admin.net.pro/Admin.NET/Vistar.Application/Entity/ObjectFieldsGroups.cs create mode 100644 admin.net.pro/Admin.NET/Vistar.Application/Service/OaOpenInterface/Dto/OaCreateProjectInput.cs create mode 100644 admin.net.pro/Admin.NET/Vistar.Application/Service/OaOpenInterface/OaOpenInterfaceService.cs diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Entity/FieldGroupDefault.cs b/admin.net.pro/Admin.NET/Vistar.Application/Entity/FieldGroupDefault.cs new file mode 100644 index 0000000..6d10af9 --- /dev/null +++ b/admin.net.pro/Admin.NET/Vistar.Application/Entity/FieldGroupDefault.cs @@ -0,0 +1,47 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +using Admin.NET.Core; +using SqlSugar; +using System.ComponentModel.DataAnnotations; +namespace Vistar.Application.Entity; + +/// +/// +/// +[SugarTable("FieldGroupDefault","")] +[Tenant("启威星 1.94.4.74")] +public class FieldGroupDefault +{ + /// + /// + /// + [Required] + [SugarColumn(ColumnName = "FieldGroupDefaultId", IsIdentity = true, ColumnDescription = "", IsPrimaryKey = true)] + public long FieldGroupDefaultId { get; set; } + + /// + /// + /// + [Required] + [SugarColumn(ColumnName = "GroupObjid", ColumnDescription = "")] + public long GroupObjid { get; set; } + + /// + /// + /// + [Required] + [SugarColumn(ColumnName = "ColumnId", ColumnDescription = "")] + public long ColumnId { get; set; } + + /// + /// + /// + [Required] + [SugarColumn(ColumnName = "DefaultValue", ColumnDescription = "", Length = -1)] + public string DefaultValue { get; set; } + +} diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Entity/Obj109.cs b/admin.net.pro/Admin.NET/Vistar.Application/Entity/Obj109.cs index 95a40be..ab93b93 100644 --- a/admin.net.pro/Admin.NET/Vistar.Application/Entity/Obj109.cs +++ b/admin.net.pro/Admin.NET/Vistar.Application/Entity/Obj109.cs @@ -813,5 +813,7 @@ public class Obj109 [SugarColumn(ColumnName = "fld005040", ColumnDescription = "", Length = -1)] public string? fld005040 { get; set; } public string fld005281 { get; set; } + public string fld005299 { get; set; } + public string fld005300 { get; set; } } diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Entity/ObjectFieldsGroups.cs b/admin.net.pro/Admin.NET/Vistar.Application/Entity/ObjectFieldsGroups.cs new file mode 100644 index 0000000..c60a6d2 --- /dev/null +++ b/admin.net.pro/Admin.NET/Vistar.Application/Entity/ObjectFieldsGroups.cs @@ -0,0 +1,369 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +using Admin.NET.Core; +using SqlSugar; +using System.ComponentModel.DataAnnotations; +namespace Vistar.Application.Entity; + +/// +/// +/// +[SugarTable("ObjectFieldsGroups","")] +[Tenant("启威星 1.94.4.74")] +public class ObjectFieldsGroups +{ + /// + /// + /// + [SugarColumn(ColumnName = "GroupName", ColumnDescription = "", Length = 200)] + public string? GroupName { get; set; } + + /// + /// + /// + [Required] + [SugarColumn(ColumnName = "GroupObjId", IsIdentity = true, ColumnDescription = "", IsPrimaryKey = true)] + public long GroupObjId { get; set; } + + /// + /// + /// + [Required] + [SugarColumn(ColumnName = "ObjectId", ColumnDescription = "")] + public long ObjectId { get; set; } + + /// + /// + /// + [Required] + [SugarColumn(ColumnName = "isTab", ColumnDescription = "")] + public bool isTab { get; set; } + + /// + /// + /// + [Required] + [SugarColumn(ColumnName = "ParentId", ColumnDescription = "")] + public long ParentId { get; set; } + + /// + /// + /// + [Required] + [SugarColumn(ColumnName = "OrderIndex", ColumnDescription = "")] + public long OrderIndex { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "GroupType", ColumnDescription = "")] + public bool? GroupType { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "NBSVersionId", ColumnDescription = "")] + public long? NBSVersionId { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "NBSPartVersionId", ColumnDescription = "")] + public long? NBSPartVersionId { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "NBSDRWVersionId", ColumnDescription = "")] + public long? NBSDRWVersionId { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "NBSASSVersionId", ColumnDescription = "")] + public long? NBSASSVersionId { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "IsVisibilityNormal", ColumnDescription = "")] + public bool? IsVisibilityNormal { get; set; } + + /// + /// + /// + [Required] + [SugarColumn(ColumnName = "ForceRevisionChange", ColumnDescription = "")] + public bool ForceRevisionChange { get; set; } + + /// + /// + /// + [Required] + [SugarColumn(ColumnName = "ForceRelatedFile", ColumnDescription = "")] + public bool ForceRelatedFile { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "LinkedFieldId", ColumnDescription = "")] + public long? LinkedFieldId { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "LinkedDelimiter", ColumnDescription = "", Length = 10)] + public string? LinkedDelimiter { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "LinkedEnabled", ColumnDescription = "")] + public bool? LinkedEnabled { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "LinkedBefore", ColumnDescription = "")] + public bool? LinkedBefore { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "LinkedCharLimit", ColumnDescription = "")] + public int? LinkedCharLimit { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "LinkedResetCounter", ColumnDescription = "")] + public bool? LinkedResetCounter { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "ConfigToShowId", ColumnDescription = "")] + public long? ConfigToShowId { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "isFieldGroupOptionDefault", ColumnDescription = "")] + public bool? isFieldGroupOptionDefault { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "UseDashboardReference", ColumnDescription = "")] + public bool? UseDashboardReference { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "OrderIndexDashBoard", ColumnDescription = "")] + public long? OrderIndexDashBoard { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "DashboardImage", ColumnDescription = "")] + public bool? DashboardImage { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "SWcheckInNoteRequired", ColumnDescription = "")] + public bool? SWcheckInNoteRequired { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "SWcheckOutNoteRequired", ColumnDescription = "")] + public bool? SWcheckOutNoteRequired { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "ContainsAllSpecialGroups", ColumnDescription = "")] + public bool? ContainsAllSpecialGroups { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "EPDMCardId", ColumnDescription = "")] + public long? EPDMCardId { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "ContainsAllSubFolders", ColumnDescription = "")] + public bool? ContainsAllSubFolders { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "SWPDMCardId", ColumnDescription = "")] + public long? SWPDMCardId { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "SWPDMNBSVariableId", ColumnDescription = "")] + public long? SWPDMNBSVariableId { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "SWPDMDescriptionVariableId", ColumnDescription = "")] + public long? SWPDMDescriptionVariableId { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "SWPDMRevisionVariableId", ColumnDescription = "")] + public long? SWPDMRevisionVariableId { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "isDefault", ColumnDescription = "")] + public bool? isDefault { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "allowedFileExtensions", ColumnDescription = "", Length = -1)] + public string? allowedFileExtensions { get; set; } + + /// + /// + /// + [Required] + [SugarColumn(ColumnName = "NewFromSameAutoNumber", ColumnDescription = "")] + public bool NewFromSameAutoNumber { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "ObjectNotesText", ColumnDescription = "", Length = 2147483647)] + public string? ObjectNotesText { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "DashboardDisplayName", ColumnDescription = "", Length = 100)] + public string? DashboardDisplayName { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "AltDisplay_EN", ColumnDescription = "", Length = 300)] + public string? AltDisplay_EN { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "AltDisplay_CS", ColumnDescription = "", Length = 300)] + public string? AltDisplay_CS { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "AltDisplay_DE", ColumnDescription = "", Length = 300)] + public string? AltDisplay_DE { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "AltDisplay_ES", ColumnDescription = "", Length = 300)] + public string? AltDisplay_ES { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "AltDisplay_FR", ColumnDescription = "", Length = 300)] + public string? AltDisplay_FR { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "AltDisplay_IT", ColumnDescription = "", Length = 300)] + public string? AltDisplay_IT { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "AltDisplay_JA", ColumnDescription = "", Length = 300)] + public string? AltDisplay_JA { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "AltDisplay_KO", ColumnDescription = "", Length = 300)] + public string? AltDisplay_KO { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "AltDisplay_PL", ColumnDescription = "", Length = 300)] + public string? AltDisplay_PL { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "AltDisplay_PTBR", ColumnDescription = "", Length = 300)] + public string? AltDisplay_PTBR { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "AltDisplay_RU", ColumnDescription = "", Length = 300)] + public string? AltDisplay_RU { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "AltDisplay_TR", ColumnDescription = "", Length = 300)] + public string? AltDisplay_TR { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "AltDisplay_ZHCN", ColumnDescription = "", Length = 300)] + public string? AltDisplay_ZHCN { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "AltDisplay_ZHTW", ColumnDescription = "", Length = 300)] + public string? AltDisplay_ZHTW { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "EnableCustomTable", ColumnDescription = "")] + public bool? EnableCustomTable { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "AltDisplay_SQ", ColumnDescription = "", Length = 300)] + public string? AltDisplay_SQ { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "Collapse", ColumnDescription = "")] + public bool? Collapse { get; set; } + + /// + /// + /// + [SugarColumn(ColumnName = "VisibleInSpObjectsTree", ColumnDescription = "")] + public bool? VisibleInSpObjectsTree { get; set; } + +} diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Service/OaOpenInterface/Dto/OaCreateProjectInput.cs b/admin.net.pro/Admin.NET/Vistar.Application/Service/OaOpenInterface/Dto/OaCreateProjectInput.cs new file mode 100644 index 0000000..88f524d --- /dev/null +++ b/admin.net.pro/Admin.NET/Vistar.Application/Service/OaOpenInterface/Dto/OaCreateProjectInput.cs @@ -0,0 +1,92 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Vistar.Application.Service.OaOpenInterface.Dto; +public class OaCreateProjectInput +{ + /// + /// 对象id + /// + public int object_id { get; set; } + /// + /// 字段组 + /// + public string field_group { get; set; } + /// + /// 设备名称(OA产品名称) + /// + public string fld004684 { get; set; } + /// + /// 项目编号 + /// + public string _System_objNBS { get; set; } + /// + /// 项目名称 + /// + public string _System_objDescription { get; set; } + /// + /// 项目负责人 + /// + public string fld004728 { get; set; } + /// + /// 开始日期 + /// + public DateTime? fld004503 { get; set; } + /// + /// 结束日期(预计完成日期) + /// + public DateTime? fld004504 { get; set; } + /// + /// 项目地点 + /// + public string? fld005299 { get; set; } + /// + /// 备注 + /// + public string? fld005300 { get; set; } + ///// + ///// 单位 + ///// + //public string? fld005281 { get; set; } + ///// + ///// 行业领域 + ///// + //public string? fld004521 { get; set; } + ///// + ///// 物料类型 + ///// + //public string? fld004519 { get; set; } + ///// + ///// 工厂 + ///// + //public string? fld004522 { get; set; } + ///// + ///// 采购类型 + ///// + //public string? fld004928 { get; set; } + ///// + ///// 是否BOM内物料 + ///// + //public string? fld004935 { get; set; } + ///// + ///// 物料同步标识 + ///// + //public string? fld004510 { get; set; } + ///// + ///// BOM同步标识 + ///// + //public string? fld004514 { get; set; } + ///// + ///// 工艺同步标识 + ///// + //public string? fld004517 { get; set; } +} diff --git a/admin.net.pro/Admin.NET/Vistar.Application/Service/OaOpenInterface/OaOpenInterfaceService.cs b/admin.net.pro/Admin.NET/Vistar.Application/Service/OaOpenInterface/OaOpenInterfaceService.cs new file mode 100644 index 0000000..8d8553d --- /dev/null +++ b/admin.net.pro/Admin.NET/Vistar.Application/Service/OaOpenInterface/OaOpenInterfaceService.cs @@ -0,0 +1,152 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +using Admin.NET.Core; +using DocumentFormat.OpenXml.Drawing.Charts; +using Furion.DependencyInjection; +using Furion.DynamicApiController; +using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Vistar.Application.Const; +using Vistar.Application.Entity; +using Vistar.Application.Service.OaOpenInterface.Dto; +using Vistar.Application.SolidWorksManageService.Dto; + +namespace Vistar.Application.Service.OaOpenInterface; +/// +/// 开放接口给OA +/// +[ApiDescriptionSettings(ApplicationConst.GroupName, Name = "OaOpenInterfaceService", Order = 100)] +public class OaOpenInterfaceService : IDynamicApiController, ITransient +{ + public SqlSugarRepository _obj109Rep; + public SolidWorksManageService.SolidWorksManageService _solidWorksManageService; + public SqlSugarRepository _objectFieldsGroupsRep; + public SqlSugarRepository _fieldGroupDefaultRep; + + public OaOpenInterfaceService( + SqlSugarRepository obj109Rep, + SolidWorksManageService.SolidWorksManageService solidWorksManageService, + SqlSugarRepository objectFieldsGroupsRep, + SqlSugarRepository fieldGroupDefaultRep) + { + _obj109Rep = obj109Rep; + _solidWorksManageService = solidWorksManageService; + _objectFieldsGroupsRep = objectFieldsGroupsRep; + _fieldGroupDefaultRep = fieldGroupDefaultRep; + } + + /// + /// OA创建、修改项目 + /// + /// + /// + [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme + "," + SignatureAuthenticationDefaults.AuthenticationScheme)] + [ApiDescriptionSettings(Name = "OaCreateProject"), HttpPost] + [DisplayName("OA创建、修改项目")] + public async Task OaCreateProject(OaCreateProjectInput input) + { + var response = new ManageResponse(); + + if (string.IsNullOrWhiteSpace(input._System_objNBS) || string.IsNullOrWhiteSpace(input._System_objDescription)) + { + response.Success = true; + response.Message = "请输入必填字段"; + return response; + } + if (input._System_objDescription.Length > 40) + { + response.Success = true; + response.Message = "项目名称不能超过40字符"; + return response; + } + //判断是否存在项目记录 + var clientExists = await _obj109Rep.AsQueryable().AnyAsync(x => x._System_objNBS == input._System_objNBS && x.deleted == false); + + if (clientExists == false) + { + var fieldList = new List(); + if (input.fld004503 != null) + { + fieldList.Add(new Field { key = "fld004503", value = input.fld004503.ToString() }); + } + if (input.fld004503 != null) + { + fieldList.Add(new Field { key = "fld004504", value = input.fld004504.ToString() }); + } + + fieldList.Add(new Field { key = "fld004684", value = input.fld004684 }); + fieldList.Add(new Field { key = "_System_objNBS", value = input._System_objNBS }); + fieldList.Add(new Field { key = "_System_objDescription", value = input._System_objDescription }); + fieldList.Add(new Field { key = "fld004728", value = input.fld004728 }); + fieldList.Add(new Field { key = "fld005299", value = input.fld005299 }); + fieldList.Add(new Field { key = "fld005300", value = input.fld005300 }); + fieldList.Add(new Field { key = "fld005281", value = "SET" }); + fieldList.Add(new Field { key = "fld004521", value = "M" }); + fieldList.Add(new Field { key = "fld004519", value = "FERT" }); + fieldList.Add(new Field { key = "fld004522", value = "1000" }); + fieldList.Add(new Field { key = "fld004928", value = "E" }); + fieldList.Add(new Field { key = "fld004935", value = "X" }); + fieldList.Add(new Field { key = "fld004510", value = "A" }); + fieldList.Add(new Field { key = "fld004514", value = "A" }); + fieldList.Add(new Field { key = "fld004517", value = "A" }); + + var fieldGroupValue = await _fieldGroupDefaultRep.AsQueryable().Where(x => x.GroupObjid == input.object_id).ToListAsync(); + + for (int i = 0; i < fieldGroupValue.Count; i++) + { + fieldList.Add(new Field { key = "fld00" + fieldGroupValue[i].ColumnId, value = fieldGroupValue[i].DefaultValue }); + } + + var fieldGroup = await _objectFieldsGroupsRep.AsQueryable().Where(x => x.GroupName == input.field_group).FirstAsync(); + + var data = new CreateProjectInput + { + object_id = input.object_id, + field_group_id = fieldGroup.GroupObjId, + fields = fieldList + }; + response = await _solidWorksManageService.CreateProject(data); + var projectData = await _obj109Rep.AsQueryable().Where(x=>x._System_objNBS==input._System_objNBS).FirstAsync(); + + var CheckData = new CheckDataInput() { + object_id=input.object_id, + record_guid=projectData.RecordGuid, + bom_level=1 + }; + await _solidWorksManageService.CheckOut(CheckData); + await _solidWorksManageService.CheckIn(CheckData); + } + else if (clientExists == true) + { + var updateable = await _obj109Rep.AsUpdateable() + .SetColumns(it => new Obj109 + { + fld004684 = input.fld004684, + _System_ObjDescription = input._System_objDescription, + fld004728 = input.fld004728, + fld005299 = input.fld005299, + fld005300 = input.fld005300, + fld004503 = input.fld004503, + fld004504 = input.fld004504 + + }) + .Where(x => x._System_objNBS == input._System_objNBS && x.deleted == false) + .ExecuteCommandHasChangeAsync(); + response.Success = true; + response.Message = updateable ? "修改成功" : "修改失败"; + } + return response; + } + +}