using System; using System.Collections.Generic; using System.Web.Http; using CncModels.Dto; using CncModels.Dto.CollectLog; using CncModels.Entity; using CncService.Interface; using CncRepository.Interface; using CncWebApi.Infrastructure; using System.Web.Http.Description; namespace CncWebApi.Controllers { /// /// 采集日志管理控制器 /// [RoutePrefix("api/admin/collect-log")] [JwtAuthFilter] public class CollectLogController : ApiController { private readonly ICollectLogService _collectLogService; private readonly ICollectRawRepository _rawRepository; public CollectLogController(ICollectLogService collectLogService, ICollectRawRepository rawRepository) { _collectLogService = collectLogService ?? throw new ArgumentNullException(nameof(collectLogService)); _rawRepository = rawRepository ?? throw new ArgumentNullException(nameof(rawRepository)); } /// 分页查询采集分析记录 [HttpGet] [Route("analysis")] [ResponseType(typeof(ApiResponse>))] public IHttpActionResult GetAnalysisList([FromUri] CollectAnalysisQuery query) { if (query == null) query = new CollectAnalysisQuery(); var result = _collectLogService.GetAnalysisList(query); return Ok(ApiResponse>.Success(result)); } /// 获取采集分析详情 [HttpGet] [Route("analysis/{id:long}")] [ResponseType(typeof(ApiResponse))] public IHttpActionResult GetAnalysisDetail(long id) { var detail = _collectLogService.GetAnalysisDetail(id); return Ok(ApiResponse.Success(detail)); } /// 根据原始日志ID查询关联的分析记录 [HttpGet] [Route("analysis/by-raw/{rawLogId:long}")] [ResponseType(typeof(ApiResponse>))] public IHttpActionResult GetAnalysisByRawLogId(long rawLogId) { var list = _collectLogService.GetAnalysisByRawLogId(rawLogId); return Ok(ApiResponse>.Success(list)); } /// 分页查询采集周期 [HttpGet] [Route("cycle")] [ResponseType(typeof(ApiResponse>))] public IHttpActionResult GetCycleList([FromUri] CollectCycleQuery query) { if (query == null) query = new CollectCycleQuery(); var result = _collectLogService.GetCycleList(query); return Ok(ApiResponse>.Success(result)); } /// 查询原始采集日志 [HttpGet] [Route("raw")] [ResponseType(typeof(ApiResponse>))] public IHttpActionResult GetRawList([FromUri] int? collectAddressId = null, [FromUri] int page = 1, [FromUri] int pageSize = 20) { var result = collectAddressId.HasValue ? _rawRepository.GetByAddressId(collectAddressId.Value, page, pageSize) : _rawRepository.GetAll(page, pageSize); return Ok(ApiResponse>.Success(result)); } /// 获取原始采集日志详情 [HttpGet] [Route("raw/{id:long}")] [ResponseType(typeof(ApiResponse))] public IHttpActionResult GetRawDetail(long id) { var entity = _rawRepository.GetById(id); if (entity == null) return NotFound(); return Ok(ApiResponse.Success(entity)); } } }