adapter_id, adapter_code, adapter_name, adapter_type, host, port, poll_interval_ms, timezone_id, capabilities, (json_extract(capabilities, '$.control') = false) read_only, status, connection_status, last_error_code, last_error_message, last_attempt_at_utc, last_observed_at_utc, create_by, create_time, update_by, update_time, remark, del_flag insert into t_device_adapter(adapter_code, adapter_name, adapter_type, host, port, poll_interval_ms, timezone_id, capabilities, status, connection_status, create_by, create_time, remark, del_flag) values(#{adapterCode}, #{adapterName}, #{adapterType}, #{host}, #{port}, #{pollIntervalMs}, #{timezoneId}, #{capabilities}, #{status}, 'DISCONNECTED', #{createBy}, sysdate(), #{remark}, 0) update t_device_adapter set adapter_name=#{adapterName}, adapter_type=#{adapterType}, host=#{host}, port=#{port}, poll_interval_ms=#{pollIntervalMs}, timezone_id=#{timezoneId}, capabilities=#{capabilities}, connection_status='DISCONNECTED', last_error_code=null, last_error_message=null, update_by=#{updateBy}, update_time=sysdate() where adapter_id=#{adapterId} and del_flag=0 update t_device_adapter set status=#{status}, connection_status='DISCONNECTED', last_error_code=null, last_error_message=null, update_by=#{updateBy}, update_time=sysdate() where adapter_id=#{adapterId} and del_flag=0 update t_device_adapter set connection_status='CONNECTED', last_error_code=null, last_error_message=null, last_attempt_at_utc=#{observedAt}, last_observed_at_utc=#{observedAt}, update_time=sysdate() where adapter_id=#{adapterId} and del_flag=0 update t_device_adapter set connection_status='ERROR', last_error_code=#{errorCode}, last_error_message=left(#{errorMessage}, 500), last_attempt_at_utc=utc_timestamp(3), update_time=sysdate() where adapter_id=#{adapterId} and del_flag=0 insert into t_detection_cabinet(adapter_id, cabinet_code, cabinet_name, capacity, channel_count, vendor_device_type, vendor_device_id, ip_address, online_status, last_seen_at_utc, status, create_by, create_time, del_flag) values(#{adapterId}, #{cabinetCode}, #{cabinetName}, 1, #{channelCount}, #{vendorDeviceType}, #{vendorDeviceId}, #{ipAddress}, #{onlineStatus}, #{lastSeenAtUtc}, '0', 'system', sysdate(), 0) update t_detection_cabinet set channel_count=greatest(channel_count, #{channelCount}), ip_address=#{ipAddress}, online_status=#{onlineStatus}, last_seen_at_utc=#{lastSeenAtUtc}, update_by='system', update_time=sysdate() where cabinet_id=#{cabinetId} and del_flag=0 insert into t_detection_channel(adapter_id, cabinet_id, devtype, devid, subdevid, chlid, display_no, online_status, work_status, last_seen_at_utc, status, create_time, del_flag) values(#{adapterId}, #{cabinetId}, #{devtype}, #{devid}, #{subdevid}, #{chlid}, #{displayNo}, #{onlineStatus}, #{workStatus}, #{lastSeenAtUtc}, '0', sysdate(), 0) on duplicate key update cabinet_id=values(cabinet_id), display_no=values(display_no), online_status=values(online_status), work_status=values(work_status), last_seen_at_utc=values(last_seen_at_utc), update_time=sysdate()