实现 D1-D2 数据回放:新增 ReplayService、ReplayController、ReplayDto,DI 注册,API 端点,预览与执行回放逻辑,基于现有 SQL 迁移。
parent
6e468089ea
commit
c9cca32757
@ -0,0 +1,26 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace CncModels.Dto.CollectLog
|
||||||
|
{
|
||||||
|
/// <summary>回放请求参数</summary>
|
||||||
|
public class ReplayRequest { public DateTime Date { get; set; } }
|
||||||
|
|
||||||
|
/// <summary>回放预览结果</summary>
|
||||||
|
public class ReplayPreview {
|
||||||
|
public DateTime Date { get; set; }
|
||||||
|
public int RawLogCount { get; set; }
|
||||||
|
public int AffectedMachineCount { get; set; }
|
||||||
|
public int AffectedRecordCount { get; set; }
|
||||||
|
public int AffectedSegmentCount { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>回放执行结果</summary>
|
||||||
|
public class ReplayResult {
|
||||||
|
public DateTime Date { get; set; }
|
||||||
|
public int ClearedRecordCount { get; set; }
|
||||||
|
public int ClearedSegmentCount { get; set; }
|
||||||
|
public int RebuiltRecordCount { get; set; }
|
||||||
|
public bool Success { get; set; }
|
||||||
|
public string ErrorMessage { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,49 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Web.Http;
|
||||||
|
using System.Web.Http.Description;
|
||||||
|
using CncModels.Dto;
|
||||||
|
using CncModels.Dto.CollectLog;
|
||||||
|
using CncService.Interface;
|
||||||
|
using CncWebApi.Infrastructure;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace CncWebApi.Controllers
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 数据回放控制器
|
||||||
|
/// </summary>
|
||||||
|
[RoutePrefix("api/admin/replay")]
|
||||||
|
[JwtAuthFilter]
|
||||||
|
public class ReplayController : ApiController
|
||||||
|
{
|
||||||
|
private readonly IReplayService _replayService;
|
||||||
|
|
||||||
|
public ReplayController(IReplayService replayService)
|
||||||
|
{
|
||||||
|
_replayService = replayService ?? throw new ArgumentNullException(nameof(replayService));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>预览回放影响范围</summary>
|
||||||
|
[HttpPost]
|
||||||
|
[Route("preview")]
|
||||||
|
[ResponseType(typeof(ApiResponse<ReplayPreview>))]
|
||||||
|
public IHttpActionResult Preview([FromBody] ReplayRequest request)
|
||||||
|
{
|
||||||
|
if (request == null) return BadRequest("请求参数错误");
|
||||||
|
var result = _replayService.PreviewReplay(request.Date);
|
||||||
|
return Ok(ApiResponse<ReplayPreview>.Success(result));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>执行回放</summary>
|
||||||
|
[HttpPost]
|
||||||
|
[Route("execute")]
|
||||||
|
[ResponseType(typeof(ApiResponse<ReplayResult>))]
|
||||||
|
public IHttpActionResult Execute([FromBody] ReplayRequest request)
|
||||||
|
{
|
||||||
|
if (request == null) return BadRequest("请求参数错误");
|
||||||
|
var result = _replayService.ExecuteReplay(request.Date);
|
||||||
|
return Ok(ApiResponse<ReplayResult>.Success(result));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue