| | |
| | | update t_test set backfill_status = 'COMPLETED', backfill_completed_at_utc = #{updatedAtUtc}, |
| | | update_time = #{updatedAtUtc} where test_id = #{testId} and reception_status = 'ENDED' |
| | | </update> |
| | | <update id="updateTestCompleted"> |
| | | update t_test set test_status = 'COMPLETED', backfill_status = 'COMPLETED', |
| | | backfill_completed_at_utc = #{updatedAtUtc}, update_time = #{updatedAtUtc} |
| | | where test_id = #{testId} and reception_status = 'ENDED' and test_status = 'COMPLETION_PENDING' |
| | | </update> |
| | | <update id="updateTestNaturallyEnded"> |
| | | update t_test set test_status = 'COMPLETION_PENDING', reception_status = 'ENDED', |
| | | ended_at_utc = #{endedAtUtc}, backfill_status = 'NOT_STARTED', update_time = #{endedAtUtc} |
| | |
| | | </select> |
| | | <insert id="insertCollectorSample"> |
| | | insert ignore into t_test_collector_sample |
| | | (test_id, binding_id, collector_id, collector_channel_code, sequence_id, device_time_utc, |
| | | (test_id, binding_id, reception_interval_id, collector_id, collector_channel_code, sequence_id, device_time_utc, |
| | | device_time_raw, server_received_at_utc, metric_code, metric_value, unit, content_sha256) |
| | | values (#{testId}, #{bindingId}, #{collectorId}, #{channelCode}, #{sequenceId}, #{deviceTimeUtc}, |
| | | values (#{testId}, #{bindingId}, #{intervalId}, #{collectorId}, #{channelCode}, #{sequenceId}, #{deviceTimeUtc}, |
| | | #{deviceTimeRaw}, #{receivedAtUtc}, #{metricCode}, #{metricValue}, #{unit}, #{contentSha256}) |
| | | </insert> |
| | | <resultMap id="TTestIntegrityIssueResultMap" type="com.ruoyi.system.domain.TTestIntegrityIssue"> |
| | | <id property="issueId" column="issue_id"/><result property="testId" column="test_id"/> |
| | | <result property="intervalId" column="interval_id"/><result property="bindingId" column="binding_id"/> |
| | | <result property="sourceType" column="source_type"/><result property="sourceId" column="source_id"/> |
| | | <result property="sourceChannelCode" column="source_channel_code"/><result property="issueType" column="issue_type"/> |
| | | <result property="issueStatus" column="issue_status"/><result property="missingFromSequence" column="missing_from_sequence"/> |
| | | <result property="missingToSequence" column="missing_to_sequence"/><result property="retryCount" column="retry_count"/> |
| | | <result property="detail" column="detail"/><result property="firstDetectedAtUtc" column="first_detected_at_utc"/> |
| | | <result property="lastDetectedAtUtc" column="last_detected_at_utc"/><result property="resolvedAtUtc" column="resolved_at_utc"/> |
| | | </resultMap> |
| | | <select id="selectIntegrityIssues" resultMap="TTestIntegrityIssueResultMap"> |
| | | select * from t_test_integrity_issue where test_id = #{testId} |
| | | order by issue_status, last_detected_at_utc desc, issue_id desc |
| | | </select> |
| | | <select id="selectTestExceptionFacts" resultMap="TTestIntegrityIssueResultMap"> |
| | | select exception_id issue_id, test_id, null interval_id, null binding_id, |
| | | case when channel_id is null then 'UNKNOWN_SOURCE' else 'CABINET_CHANNEL' end source_type, |
| | | channel_id source_id, null source_channel_code, exception_type issue_type, |
| | | exception_status issue_status, null missing_from_sequence, null missing_to_sequence, |
| | | occurrence_count retry_count, detail, first_occurred_at_utc first_detected_at_utc, |
| | | last_occurred_at_utc last_detected_at_utc, handled_at_utc resolved_at_utc |
| | | from t_test_exception where test_id = #{testId} |
| | | order by exception_status, last_occurred_at_utc desc, exception_id desc |
| | | </select> |
| | | <select id="selectBtsSequencesByInterval" resultType="long"> |
| | | select seq_id from t_test_sample where reception_interval_id = #{intervalId} order by seq_id |
| | | </select> |
| | | <select id="selectCollectorSequencesByInterval" resultType="long"> |
| | | select distinct sequence_id from t_test_collector_sample where reception_interval_id = #{intervalId} order by sequence_id |
| | | </select> |
| | | <select id="selectOpenIntegrityIssue" resultMap="TTestIntegrityIssueResultMap"> |
| | | select * from t_test_integrity_issue where interval_id = #{intervalId} and issue_status = 'OPEN' |
| | | and source_type = #{sourceType} and source_id = #{sourceId} |
| | | and (source_channel_code = #{sourceChannelCode} or (source_channel_code is null and #{sourceChannelCode} is null)) |
| | | and (missing_from_sequence = #{missingFrom} or (missing_from_sequence is null and #{missingFrom} is null)) |
| | | and (missing_to_sequence = #{missingTo} or (missing_to_sequence is null and #{missingTo} is null)) limit 1 |
| | | </select> |
| | | <select id="selectOpenIntegrityIssues" resultMap="TTestIntegrityIssueResultMap"> |
| | | select * from t_test_integrity_issue where interval_id = #{intervalId} and issue_status = 'OPEN' |
| | | and source_type = #{sourceType} and source_id = #{sourceId} |
| | | and (source_channel_code = #{sourceChannelCode} or (source_channel_code is null and #{sourceChannelCode} is null)) |
| | | order by issue_id |
| | | </select> |
| | | <insert id="insertIntegrityIssue" parameterType="com.ruoyi.system.domain.TTestIntegrityIssue" useGeneratedKeys="true" keyProperty="issueId"> |
| | | insert into t_test_integrity_issue |
| | | (test_id, interval_id, binding_id, source_type, source_id, source_channel_code, issue_type, issue_status, |
| | | missing_from_sequence, missing_to_sequence, retry_count, detail, first_detected_at_utc, last_detected_at_utc) |
| | | values (#{testId}, #{intervalId}, #{bindingId}, #{sourceType}, #{sourceId}, #{sourceChannelCode}, #{issueType}, 'OPEN', |
| | | #{missingFromSequence}, #{missingToSequence}, #{retryCount}, #{detail}, #{firstDetectedAtUtc}, #{lastDetectedAtUtc}) |
| | | </insert> |
| | | <update id="touchIntegrityIssue"> |
| | | update t_test_integrity_issue set retry_count = #{retryCount}, detail = #{detail}, last_detected_at_utc = #{detectedAtUtc} |
| | | where issue_id = #{issueId} and issue_status = 'OPEN' |
| | | </update> |
| | | <update id="rewindBackfillCursor"> |
| | | update t_test_backfill_cursor set next_position = least(next_position, #{nextPosition}), |
| | | source_status = 'PENDING', last_error = '区间序号缺口待重试', updated_at_utc = utc_timestamp(3) |
| | | where test_id = #{testId} and binding_id = #{bindingId} and source_type = #{sourceType} |
| | | and source_id = #{sourceId} |
| | | and (source_channel_code = #{sourceChannelCode} or (source_channel_code is null and #{sourceChannelCode} is null)) |
| | | </update> |
| | | <update id="resolveIntegrityIssues"> |
| | | update t_test_integrity_issue set issue_status = 'RESOLVED', resolved_at_utc = #{resolvedAtUtc} |
| | | where test_id = #{testId} and interval_id = #{intervalId} and issue_status = 'OPEN' |
| | | and source_type = #{sourceType} and source_id = #{sourceId} |
| | | and (source_channel_code = #{sourceChannelCode} or (source_channel_code is null and #{sourceChannelCode} is null)) |
| | | </update> |
| | | <update id="resolveIntegrityIssue"> |
| | | update t_test_integrity_issue set issue_status = 'RESOLVED', resolved_at_utc = #{resolvedAtUtc} |
| | | where issue_id = #{issueId} and issue_status = 'OPEN' |
| | | </update> |
| | | <select id="countOpenIntegrityIssues" resultType="int"> |
| | | select count(1) from t_test_integrity_issue where test_id = #{testId} and issue_status = 'OPEN' |
| | | </select> |
| | | <select id="countOpenExceptions" resultType="int"> |
| | | select count(1) from t_test_exception where test_id = #{testId} and exception_status = 'OPEN' |
| | | </select> |
| | | <select id="selectCollectorSampleId" resultType="long"> |
| | | select sample_id from t_test_collector_sample |
| | | where collector_id = #{collectorId} and collector_channel_code = #{channelCode} |
| | |
| | | </update> |
| | | <update id="updateReceptionStopped"> |
| | | update t_test |
| | | set test_status = 'COMPLETED', reception_status = 'ENDED', ended_at_utc = #{endedAtUtc}, |
| | | set test_status = 'COMPLETION_PENDING', reception_status = 'ENDED', ended_at_utc = #{endedAtUtc}, |
| | | backfill_status = 'NOT_STARTED', |
| | | update_by = #{updateBy}, update_time = #{endedAtUtc} |
| | | where test_id = #{testId} and reception_status in ('RECEIVING', 'PAUSED') and del_flag = 0 |