• [技术干货] 智慧园区DLI脚本示例
    dli脚本示例如下:--实时车位 CREATE SOURCE STREAM mqs_vehicle_park_space_keytop (park_code STRING, free_space_num STRING, total_space_num STRING, last_update_date STRING, area_info STRING) WITH ( type = "user_defined", region = '{{G_region}}', type_class_name = '{{G_mqs_source_class}}', type_class_parameter = '-namesrvUrls {{G_mqs_namesrv_urls}} -appId {{G_app_id_vehicle}} -appSecret [{{G_app_secret_vehicle}}] -topic {{G_topic_vehicle_park_space}} -mappings park_code=parkCode;free_space_num=freeSpaceNum:INTEGER;total_space_num=totalSpaceNum:INTEGER;last_update_date=eventTime;area_info=areaInfo' )TIMESTAMP BY proctime.proctime; -- 实时流数据类型转换接收中间流 CREATE TEMP STREAM vehicle_park_space_keytop (park_code STRING, free_space_num INTEGER, total_space_num INTEGER, last_update_date STRING, area_info STRING); --------原始流数据类型转换-------------------------- INSERT INTO vehicle_park_space_keytop SELECT park_code, case when char_length(free_space_num )=0 then 0 WHEN free_space_num='' THEN 0 WHEN free_space_num='null' THEN 0 WHEN free_space_num is null THEN 0 else cast(free_space_num as INTEGER) end, case when char_length(total_space_num )=0 then 0 WHEN total_space_num='' THEN 0 WHEN total_space_num='null' THEN 0 WHEN total_space_num is null THEN 0 else cast(total_space_num as INTEGER) end, last_update_date, area_info from mqs_vehicle_park_space_keytop; --DWI目标表 CREATE SINK STREAM dwi_vehicle_park_space_keytop (park_code STRING, free_space_num INTEGER, total_space_num INTEGER, area_info STRING, dw_last_update_date TIMESTAMP, dw_creation_date TIMESTAMP, dw_creation_by STRING, dw_last_update_by STRING,dw_batch_number BIGINT) WITH ( type = "rds", username = '{{G_dws_username}}', password = '{{G_dws_password}}', db_url = '{{G_dws_rds_url}}', db_columns = "park_code,free_space_num,total_space_num,area_info,dw_last_update_date,dw_creation_date,dw_creation_by,dw_last_update_by,dw_batch_number", table_name = "dwi_vehicle.dwi_vehicle_park_space_keytop" ); --将原始数据写入dwi INSERT INTO dwi_vehicle_park_space_keytop (park_code,free_space_num,total_space_num,area_info,dw_last_update_date,dw_creation_date,dw_creation_by,dw_last_update_by,dw_batch_number) SELECT park_code, free_space_num, total_space_num, area_info, TO_LOCALTIMESTAMP(UNIX_TIMESTAMP_MS(last_update_date,"yyyyMMddHHmmss")) AS dw_last_update_date, TO_LOCALTIMESTAMP(UNIX_TIMESTAMP_MS()) AS dw_creation_date, 'dli_job_vehicle_park_space_keytop' AS dw_creation_by, 'dli_job_vehicle_park_space_keytop' AS dw_last_update_by, UNIX_TIMESTAMP_MS () AS dw_batch_number FROM vehicle_park_space_keytop where total_space_num>=free_space_num;
  • [技术干货] 智慧园区DO开发之如何创建table/schema语句开发
    如果基线资产不支持定制人员的业务,定制需要新建schema、新建表,和基线保持高度隔离,不支持修改、删除基线原始的schema和表。create_schema.sql :create schema dm_access;dm_access_vehicle_park_trend_f.sql:-- 创建自增序列 create sequence dm_access.parkTrend_seq start with 1 cache 10000; CREATE TABLE IF NOT EXISTS dm_access.dm_access_vehicle_park_trend_f ( id bigint default nextval('dm_access.parkTrend_seq'), date_key character varying(50), time_key character varying(50), park_code character varying(64), parking_id character varying(100), period_time timestamp without time zone, current_car_num integer, dw_creation_by character varying(255), dw_creation_date timestamp without time zone, dw_last_update_by character varying(255), dw_last_update_date timestamp without time zone, dw_batch_number bigint ) WITH (orientation=row, compression=no) DISTRIBUTE BY HASH (id); -- 绑定seq到表的ID列,别人无法使用此序列,并且表删除时序列级联删除 alter sequence dm_access.parkTrend_seq owned by dm_access.dm_access_vehicle_park_trend_f.id; COMMENT ON TABLE dm_access.dm_access_vehicle_park_trend_f IS '园区车辆趋势汇总事实表(park vehicles trend summary)'; COMMENT ON COLUMN dm_access.dm_access_vehicle_park_trend_f.id IS '唯一标识id(unique id)'; COMMENT ON COLUMN dm_access.dm_access_vehicle_park_trend_f.park_code IS '园区code(park code)'; COMMENT ON COLUMN dm_access.dm_access_vehicle_park_trend_f.date_key IS '日期key(date key)'; COMMENT ON COLUMN dm_access.dm_access_vehicle_park_trend_f.time_key IS '时间key(time key)'; COMMENT ON COLUMN dm_access.dm_access_vehicle_park_trend_f.parking_id IS '停车场ID(Parking lot ID)'; COMMENT ON COLUMN dm_access.dm_access_vehicle_park_trend_f.period_time IS '时间点(小时)(time points (h))'; COMMENT ON COLUMN dm_access.dm_access_vehicle_park_trend_f.current_car_num IS '当前车辆(current vehicle number)'; COMMENT ON COLUMN dm_access.dm_access_vehicle_park_trend_f.dw_creation_date IS '创建时间(creation date)'; COMMENT ON COLUMN dm_access.dm_access_vehicle_park_trend_f.dw_last_update_date IS '最后更新日期(Last update date)'; COMMENT ON COLUMN dm_access.dm_access_vehicle_park_trend_f.dw_creation_by IS '创建人(Data creator)'; COMMENT ON COLUMN dm_access.dm_access_vehicle_park_trend_f.dw_last_update_by IS '最后更新人(Data last updated by)';
  • [问题求助] 上传文件 报错 未授权的访问
    使用 /service/AIService/0.1.0/putObject 上传一段音频文件报错 未授权或者说有什么别的方式可以上传  
  • [技术干货] 创建Topic并设置订阅/发布
    创建接收设备原始消息的Topic、接收设备原始告警消息的Topic。创建Topic根据规划,人行闸机IO需要2个Topic接收新基点IoT发来的消息。在ROMA管理控制台的菜单栏中,切换应用到:GTM001__人行闸机设备IO。选择“消息集成 > 消息队列服务MQS > Topic管理 > 创建Topic”,依次创建规划中的2个Topic。其中GTM001为租户名称,实际开发时请替换为自己实际的租户名或者用户名。表1 创建Topic Topic名称所属应用说明T_IO_DATACHANGED_Turnstile_BP__GTM001GTM001__人行闸机设备IO接收设备原始消息的TopicT_IO_ALARM_Turnstile_BP__GTM001GTM001__人行闸机设备IO接收设备原始告警消息的Topic配置Topic的订阅/发布本示例中设备是通过新基点IoT系统接入到ROMA平台,ROMA上的新基点IoT应用需要向上面创建的2个Topic中写数据,所以需要配置Topic的发布应用为“新基点IoT”(GTM001__io.basepoint.connectionmax.iot)。如果设备是通过其他IoT系统接入ROMA,例如华为云IoT,则此处Topic的发布应用应该配置为“华为云IoT”。发布应用可以向Topic中写数据,订阅应用可以读取Topic中的数据。根据设备IO数据规划,人行闸机设备IO的Topic发布/订阅关系如表2所示。表2 Topic的订阅/发布 Topic名称发布应用订阅应用IDT_IO_DATACHANGED_Turnstile_BP__GTM001新基点IoTGTM001__人行闸机设备IOT_IO_ALARM_Turnstile_BP__GTM001新基点IoTGTM001__人行闸机设备IO登录ROMA平台。选择“消息集成 > 消息队列服务MQS > Topic管理”,单击Topic操作列的“发布”,发布应用选择“新基点IoT”。2个Topic的发布应用都要配置为“新基点IoT”。单击Topic操作列的“订阅”,订阅应用选择“GTM001__人行闸机设备IO”。在“发布”或者“订阅”界面,单击“查看连接地址”可获取MQS服务地址。根据网络区域选择,开发设备IO时一般选择内部访问的地址为MQS服务地址。例如:192.168.39.77:9776;192.168.39.8:9776,拷贝到本地以便后续步骤使用。
  • [技术干货] 设备IO开发规划
    开发流程设备IO的开发流程如表1,开发规范请参考《集成平台开发规范》。表1 设备IO开发流程流程说明注册应用在ROMA平台注册设备IO的应用名称和应用ID。创建Topic并设置订阅/发布创建接收设备原始消息的Topic、接收设备原始告警消息的Topic。环境配置/密码配置通过环境配置/密码配置,将参数或者密码设为全局变量,后续代码中通过全局变量获取对应参数、参数值、密钥和密码等。开发消息上报接口设备IO的消息上报接口,共包含3个LiveData接口。开发指令下发接口设备IO的指令下发接口,1个LiveData接口。设备IO数据规划规划应用ID、Topic和接口URL,如表2所示。表2 设备IO的数据规划参数样例说明租户GTM001下面样例中的“GTM001”为租户名称。本章节在开发过程中,要在设计内容的基础上增加后缀“__GTM001”或者前缀“GTM001__”,即携带租户信息。deviceTypeTurnstile_BPIoT系统对应的IO通过消息体中的“deviceType”参数,确定要路由的设备IO。其中“BP”指新基点IoT(BasePoint),在多IoT场景中以“deviceType”中的后缀(例如“_BP”)区分不同的IoT。在实际开发过程中,根据设备实际接入的IoT系统来增加后缀。应用IDGTM001__io.device.basepoint.Turnstile_BP人行闸机IO在ROMA平台的应用ID。其中GTM001为租户名称,实际开发时请替换为自己实际的租户名或者用户名。应用名称GTM001__人行闸机设备IO人行闸机IO在ROMA平台的应用名称。Topic接收新基点IoT发来的设备原始消息的Topic:T_IO_DATACHANGED_Turnstile_BP__GTM001人行闸机IO需要2个Topic接收新基点IoT发来的消息:一个接收设备原始消息,一个接收设备告警消息。其中GTM001为租户名称,实际开发时请替换为自己实际的租户名或者用户名。接收新基点IoT发来的设备原始告警消息的Topic:T_IO_ALARM_Turnstile_BP__GTM001接收设备信息变化的标准Topic:T_IO_DEVICE_DATACHANGED__GTM001消息格式标准化之后:转换后的设备原始消息,推送给设备信息变化标准Topic。转换后的设备告警消息,推送给设备告警的标准Topic。这2个Topic只需要创建一次即可,所有设备IO转换后的标准消息都推送给它们,不需要重复创建。接收设备告警的标准Topic:T_IO_DEVICE_ALARM__GTM001API设备数据变化消息回调(人行闸机)URL:/io/GTM001__io.device.basepoint.Turnstile_BP/device/data-changed人行闸机IO的2个LiveData接口,分别订阅如下2个Topic进行数据格式标准化。T_IO_DATACHANGED_Turnstile_BP__GTM001T_IO_ALARM_Turnstile_BP__GTM001其中GTM001为租户名称,实际开发时请替换为自己实际的租户名或者用户名。设备告警消息回调(人行闸机)URL:/io/GTM001__io.device.basepoint.Turnstile_BP/device/alarm开放订阅关系的配置接口URL:/io/GTM001__io.device.basepoint.Turnstile_BP/device/mqsSet消息订阅接口,开放订阅关系的配置接口,用于订阅设备变化、告警消息。人行闸机设备IO指令下发URL:/io/GTM001__io.device.basepoint.Turnstile_BP/south/send-command/0.1.0人行闸机设备IO指令下发包含一个LiveData接口,名称为“指令下发(人行闸机)”。
  • [技术干货] 开发DO之DLI脚本示例
    dli脚本示例如下:--实时车位 CREATE SOURCE STREAM mqs_vehicle_park_space_keytop (park_code STRING, free_space_num STRING, total_space_num STRING, last_update_date STRING, area_info STRING) WITH ( type = "user_defined", region = '{{G_region}}', type_class_name = '{{G_mqs_source_class}}', type_class_parameter = '-namesrvUrls {{G_mqs_namesrv_urls}} -appId {{G_app_id_vehicle}} -appSecret [{{G_app_secret_vehicle}}] -topic {{G_topic_vehicle_park_space}} -mappings park_code=parkCode;free_space_num=freeSpaceNum:INTEGER;total_space_num=totalSpaceNum:INTEGER;last_update_date=eventTime;area_info=areaInfo' )TIMESTAMP BY proctime.proctime; -- 实时流数据类型转换接收中间流 CREATE TEMP STREAM vehicle_park_space_keytop (park_code STRING, free_space_num INTEGER, total_space_num INTEGER, last_update_date STRING, area_info STRING); --------原始流数据类型转换-------------------------- INSERT INTO vehicle_park_space_keytop SELECT park_code, case when char_length(free_space_num )=0 then 0 WHEN free_space_num='' THEN 0 WHEN free_space_num='null' THEN 0 WHEN free_space_num is null THEN 0 else cast(free_space_num as INTEGER) end, case when char_length(total_space_num )=0 then 0 WHEN total_space_num='' THEN 0 WHEN total_space_num='null' THEN 0 WHEN total_space_num is null THEN 0 else cast(total_space_num as INTEGER) end, last_update_date, area_info from mqs_vehicle_park_space_keytop; --DWI目标表 CREATE SINK STREAM dwi_vehicle_park_space_keytop (park_code STRING, free_space_num INTEGER, total_space_num INTEGER, area_info STRING, dw_last_update_date TIMESTAMP, dw_creation_date TIMESTAMP, dw_creation_by STRING, dw_last_update_by STRING,dw_batch_number BIGINT) WITH ( type = "rds", username = '{{G_dws_username}}', password = '{{G_dws_password}}', db_url = '{{G_dws_rds_url}}', db_columns = "park_code,free_space_num,total_space_num,area_info,dw_last_update_date,dw_creation_date,dw_creation_by,dw_last_update_by,dw_batch_number", table_name = "dwi_vehicle.dwi_vehicle_park_space_keytop" ); --将原始数据写入dwi INSERT INTO dwi_vehicle_park_space_keytop (park_code,free_space_num,total_space_num,area_info,dw_last_update_date,dw_creation_date,dw_creation_by,dw_last_update_by,dw_batch_number) SELECT park_code, free_space_num, total_space_num, area_info, TO_LOCALTIMESTAMP(UNIX_TIMESTAMP_MS(last_update_date,"yyyyMMddHHmmss")) AS dw_last_update_date, TO_LOCALTIMESTAMP(UNIX_TIMESTAMP_MS()) AS dw_creation_date, 'dli_job_vehicle_park_space_keytop' AS dw_creation_by, 'dli_job_vehicle_park_space_keytop' AS dw_last_update_by, UNIX_TIMESTAMP_MS () AS dw_batch_number FROM vehicle_park_space_keytop where total_space_num>=free_space_num;
  • [技术干货] 开发DO之创建table/schema语句开发
    如果基线资产不支持定制人员的业务,定制需要新建schema、新建表,和基线保持高度隔离,不支持修改、删除基线原始的schema和表。create_schema.sql :create schema dm_access;dm_access_vehicle_park_trend_f.sql:-- 创建自增序列 create sequence dm_access.parkTrend_seq start with 1 cache 10000; CREATE TABLE IF NOT EXISTS dm_access.dm_access_vehicle_park_trend_f ( id bigint default nextval('dm_access.parkTrend_seq'), date_key character varying(50), time_key character varying(50), park_code character varying(64), parking_id character varying(100), period_time timestamp without time zone, current_car_num integer, dw_creation_by character varying(255), dw_creation_date timestamp without time zone, dw_last_update_by character varying(255), dw_last_update_date timestamp without time zone, dw_batch_number bigint ) WITH (orientation=row, compression=no) DISTRIBUTE BY HASH (id); -- 绑定seq到表的ID列,别人无法使用此序列,并且表删除时序列级联删除 alter sequence dm_access.parkTrend_seq owned by dm_access.dm_access_vehicle_park_trend_f.id; COMMENT ON TABLE dm_access.dm_access_vehicle_park_trend_f IS '园区车辆趋势汇总事实表(park vehicles trend summary)'; COMMENT ON COLUMN dm_access.dm_access_vehicle_park_trend_f.id IS '唯一标识id(unique id)'; COMMENT ON COLUMN dm_access.dm_access_vehicle_park_trend_f.park_code IS '园区code(park code)'; COMMENT ON COLUMN dm_access.dm_access_vehicle_park_trend_f.date_key IS '日期key(date key)'; COMMENT ON COLUMN dm_access.dm_access_vehicle_park_trend_f.time_key IS '时间key(time key)'; COMMENT ON COLUMN dm_access.dm_access_vehicle_park_trend_f.parking_id IS '停车场ID(Parking lot ID)'; COMMENT ON COLUMN dm_access.dm_access_vehicle_park_trend_f.period_time IS '时间点(小时)(time points (h))'; COMMENT ON COLUMN dm_access.dm_access_vehicle_park_trend_f.current_car_num IS '当前车辆(current vehicle number)'; COMMENT ON COLUMN dm_access.dm_access_vehicle_park_trend_f.dw_creation_date IS '创建时间(creation date)'; COMMENT ON COLUMN dm_access.dm_access_vehicle_park_trend_f.dw_last_update_date IS '最后更新日期(Last update date)'; COMMENT ON COLUMN dm_access.dm_access_vehicle_park_trend_f.dw_creation_by IS '创建人(Data creator)'; COMMENT ON COLUMN dm_access.dm_access_vehicle_park_trend_f.dw_last_update_by IS '最后更新人(Data last updated by)';
  • [问题求助] AppCube标准页面-上传组件,上传格式不符合要求时,默认的提示如何不显示?
    上传组件,默认提示框如何隐藏?
  • [技术干货] OPS标准监控指标
    标准监控指标按照OS,DB,容器,业务应用的维度,建议伙伴实现如下常用的监控告警项如下:接入OPS之后,OS、容器自动监控,不需要伙伴开发监控脚本。DB和业务应用需要伙伴自己开发监控脚本。表1 监控指标说明 监控大类指标分类指标名称指标说明DB性能类指标QPS数据库每秒处理的请求数量TPS数据库每秒处理的事务数量并发数数据库实例当前并行处理的会话数量连接数连接到数据库会话的数量缓存命中率查询命中缓存的比例高可用指标可用性数据库是否可以正常对外服务阻塞当前阻塞的会话数慢查询慢查询情况主从延迟主从延迟时间主从状态主从链路是否正常死锁查看死锁信息OSCPUCPU steal timeCPU使用内部虚拟机运行任务的时间占CPU总时间的百分比CPU softirq timeCPU软中断时间CPU nice time用户进程空间内改变过优先级的进程占用CPU百分比CPU iowait time用户进程等待磁盘IO而使CPU处于空闲状态的比例CPU system time空闲CPU百分比CPU idle time空闲时间CPU interrupt time中断时间Processor load (15 min average per core)CPU 15分钟负载Processor load (5 min average per core)CPU 5分钟负载Processor load (1 min average per core)CPU 1分钟负载Context switches per second每秒上下文切换数磁盘Free disk space磁盘剩余百分比Free inodes磁盘inodeRead: Bytes/sec磁盘读速度Write: Bytes/sec磁盘写速度内存Total memory内存总量Available memory可用内存大小Total swap space交换分区大小Free swap space in %空闲交换分区百分比网络Incoming network traffic每秒进入字节数Outgoing network traffic每秒出去字节数net performance网络性能监控(重传、丢包率、拥塞)OSNumber of logged in users登录用户数Maximum number of processes系统设置的最大进程数Maximum number of opened files系统设置的最大打开文件数容器k8s容器容器应用的CPU使用率容器应用的CPU使用率容器应用每分钟内存增长容器应用每分钟内存增长容器应用内存使用率(不含cache)容器应用内存使用率(不含cache)容器CPU的限额容器CPU的限额容器应用消耗的CPU的时间容器应用消耗的CPU的时间容器应用内存限额容器应用内存限额容器应用内存占用量(不含cache)容器应用内存占用量(不含cache)容器CPU的总时间容器CPU的总时间容器状态监控容器状态监控业务和应用监控业务监控指标交易量反映业务系统的交易量大小交易成功率反映业务交易执行是否正常交易时长反映业务系统的交易的性能是否正常应用监控指标Web应用返回码反映Web应用运行是否有异常应用响应时间反映应用的性能状况会话数、会话连接反映应用的可用性及负载监控项示例:OS101003_{HOST.IP} has just been restarted! [主机已重启]101009_{HOST.IP}_{HOST.IP}_{#FSNAME}_Free disk space is not enough on volume! [磁盘空间不足]101027_{HOST.IP}_CPU usage pecentage is high! [操作系统CPU利用率过高]DB101031_{HOST.IP}_elastalert_{HOST.IP}_Slow sql found! [RDS中有sql执行时长超过60秒。详情: {ITEM.VALUE}]101035_{HOST.IP}_{#APPNAME}_Mysql slave_IO/SQL_Running status error![MySQL主从复制异常:Slave_IO_Running状态异常]101037_{HOST.IP}_{#APPNAME}_connect status check failed![MySQL {#APPNAME} 检查连接异常]101040_{HOST.IP}_Process restart! [DB进程重启]容器101019_{HOST.IP}_Docker CPU usage percentage is high! [容器内CPU使用率过高]101021_{HOST.IP}_Docker memory usage percentage is high! [容器内内存使用率过高]101039_{HOST.IP}_Docker_ {#IMAGES} container_id_list change[{#IMAGES}容器id发生变化]业务应用106003_{HOST.IP}_DataTool job scheduling error! [DataTool作业调度异常]106042_{HOST.IP}_BatchFileProcessBO__export_File {fileName}({fileSize}) is over size[批处理导出的文件大小超过了上限值]106023_{HOST.IP}_Found airflow gunicorn process missing![DataTool的airflow gunicorn进程消失]
  • [技术干货] Zabbix监控关键术语
    Zabbix监控关键术语host group:是一个Host的群组,拥有相似属性的host可以组成一个group,方便统一的管理,比如珠海办公室所有的电脑可以组成一个host组。host:被监控的设备,物理服务器,虚拟机,交换机等,是Zabbix监控的基本载体,所有的监控都是基于host 。item:监控指标,CPU使用率,磁盘利用率,是监控项,是监控的基本元素,每一个监控项对应一个被监控端的采集值。Application:是Item的集合,将相似的item放置在同一个application里面便于管理,比如所有监控网络item。Trigger:Trigger是触发器,当Items采集值满足Triggers的触发条件时,就会产生actions。Action:是告警动作,当触发器条件被满足时,就会执行指定的action。Media:即告警方式,Zabbix提供四类Media:Email/SMS/Jabber/Script。Template:模板是可以方便地应用于多个主机的一组实体。而这些实体包括:items、triggers,graphs、applications等。
  • [问题求助] (香港启德项目)appcube访问gis地图使用一个账号导致前端不同IOC的账号出现bug
    多个IOC前端账号先后登录,操作地图,由于appcube调用gis服务是使用同一个账号,导致,先登录的IOC的账号操作地图时,gis服务无法提供服务,导致地图不展示想要的效果,与gis的人沟通之后,需要华为改变无法并发的问题顾庆耀、叶万龙/18068848554、17666139606/yewanlong050@chinasoftinc.com、guqingyao@chinasoftinc.com
  • [问题求助] 国能准能智慧园区设备离线告警调测
    环境信息:开发环境问题一句话总结:模拟MQS设备离线Topic【Device_DeviceOnlineStatus】,设备状态已变,未产生离线告警问题现象截图:使用场景或目的:设备在离线状态可以改变,但是没有产生离线告警操作步骤:roma环境中通过mqshttpconnector模拟发送MQS消息,设备状态改变,未告警。(选填)希望优化的地方或希望实现的效果:希望能产生离线告警租户账号:Hi-gnzn项目名称: 国能准能智慧园区
  • [问题求助] 【江南造船厂现场】查询人员相关业务性能差优化方案求助
    【操作步骤&问题现象】 江南造船厂现场查询人员相关业务性能差优化方案求助【详细需求如下】:业务功能里循环查询人员相关信息,性能不佳,需优化方案。求助人:史军伟   电话:15637887202
  • [问题求助] 触发器里面用到的脚本参数如何灵活传入
    的大神触发器的脚本的里面的参数如何根据前端传过来设置了,现在看只能写死
  • [问题求助] ABC 参考应用HiCampus__SpaceManagement建议
    项目:盐城电力使用基线参考应用,资产包HiCampus__SpaceManagement中组织主数据删除信息提示我:删除“hh”会级联删除子组织,确认删除吗?点击'确定'之后是否可以删除级联子组织??  前后端提示信息不一致?
总条数:710 到第
上滑加载中